在一个分区表上的一个列建立了索引。。主要的目的是:是我们需要很快的获取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,会使得语句不走创建的全局索引?
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 这个条件本生需要返回所有的值 包括空值。而索引本生是不记录空值的。但是没找到官方说明。记录一下