ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 语句使用1=1导致MAX时索引失效

语句使用1=1导致MAX时索引失效

原创 Linux操作系统 作者:gaopengtttt 时间:2012-09-27 15:28:40 0 删除 编辑
在一个分区表上的一个列建立了索引。。主要的目的是:是我们需要很快的获取CDB_BUSINESS_MAPPING_BS 表的最大时间,然后我们老大就在那个列创建了全局索引:已在该列创建全局索引。
create index TS_CDB.IDX_CDB_UPTIME on TS_CDB.CDB_BUSINESS_MAPPING_BS (CDB_UPDATE_DATE) Nologging tablespace
 I_DATA_01 online parallel 5;
alter index ts_cdb.IDX_CDB_UPTIME noparallel;
 请使用类似如下语句获取相关的值:
 
select max(CDB_UPDATE_DATE)  from ts_cdb.CDB_BUSINESS_MAPPING_BS;
 
SELECT max(CDB_UPDATE_DATE) as MAX_CDB_UPDATE_DATE FROM ts_cdb.CDB_BUSINESS_MAPPING_BS a WHERE
CDB_UPDATE_DATE BETWEEN  TO_DATE('2001-05-08 00:16:37','yyyy-mm-dd hh24:mi:ss')  AND  TO_DATE('2012-05-11 03:08:59','yyyy-mm-dd hh24:mi:ss');
我想,问,为啥子
select max(CDB_UPDATE_DATE)  from ts_cdb.CDB_BUSINESS_MAPPING_BS where 1=1,会使得语句不走创建的全局索引?
 
回答:
select max(CDB_UPDATE_DATE)  from ts_cdb.CDB_BUSINESS_MAPPING_BS where 1=1 and CDB_UPDATE_DATE is not null;
 
猜测可能是1=1 这个条件本生需要返回所有的值 包括空值。而索引本生是不记录空值的。但是没找到官方说明。记录一下
 
 
 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7728585/viewspace-745227/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 由ORA-01652想到的
请登录后发表评论 登录
全部评论
wxh gp_22389860 公众号 MySQL学习 书籍 深入理解MySQL主从原理

注册时间:2021-06-07

  • 博文量
    868
  • 访问量
    3495543