SYS@192.168.100.235:1521/orcl> @ cntg LIS.LIS_TEST SENT_INST_FLAG
select count(*) , SENT_INST_FLAG from LIS.LIS_TEST group by SENT_INST_FLAG order by 1 desc;
COUNT(*) SENT_INST_FLAG
---------- --------------
5129342 0
3135070 1
2 rows selected.
SYS@192.168.100.235:1521/orcl> @ cntg LIS.LIS_TEST SENT_count
select count(*) , SENT_count from LIS.LIS_TEST group by SENT_count order by 1 desc;
COUNT(*) SENT_COUNT
---------- ----------
6186388 0
2059983 1
13864 2
2230 3
...
1 182
224 rows selected.
--//建立索引在SENT_INST_FLAG以及SENT_COUNT也是不合理的,也就是根据以上分析建立复合索引:TEST_DATE,INST_ID.而且不存在隐式
--//转换的问题。
CREATE INDEX LIS.i_LIS_TEST_TEST_DATE_INST_ID ON LIS.LIS_TEST
(TEST_DATE, INST_ID)
LOGGING
STORAGE (
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
NOPARALLEL;
--//再看执行计划,发现
SYS@192.168.100.235:1521/orcl> @ dpc 4qz6aykj6gq6v '' '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 4qz6aykj6gq6v, child number 1
-------------------------------------
select a.*,1 as TenantId from lis_test a where test_date=:end_date
and inst_id=:inst_id AND SENT_INST_FLAG = 0 AND SENT_COUNT