Oacle大表查询,条件字段可能为null时,如何提升查询效率
场景: 公司有一张记录外部请求的表,数据量庞大(亿级),且没做分库分表,导致查询时部分字段做为条件又没索引时,查询耗时超过接口请求时间。
方法1: 使用复合索引,ORDERNUMBER(可能为null列)为先导列,第二列使用常数。
# 使用复合索引,ORDERNUMBER(可能为null列)为先导列,第二列使用常数。
create index db_name.idx_ordnumber on db_name.table_name(ordernumber,1);
验证方法1:
1、首先先看一下查询有索引字段时,oracle执行计划
select * from db_name.table_name where TRANS_IDO = '36d5c2d9ef86472393c6da43270a7a88';
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 187 |