1. 首页
  2. IT资讯

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

在一个分区表上的一个列建立了索引。。主要的目的是:是我们需要很快的获取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博客 ” ,链接:http://blog.itpub.net/7728585/viewspace-745227/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:深沉的少年,转转请注明出处:http://www.cxybcw.com/183292.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code