You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle复合索引创建顺序最佳实践:(date,type)还是(type,date)?

复合索引选择问题解答

一、WHERE条件为date=? AND type=?时的索引选择

优先选择**(date, type)**作为复合索引,原因如下:

  • 复合索引遵循「高选择性字段前置」的核心原则:date是等值匹配,单个date对应的记录数远小于type的分组规模(比如type=A就占85%的数据)。先通过date把查询范围缩小到某一天的记录,再用type做二次过滤,能快速定位目标数据。
  • 如果用(type, date),假设查询type=A,第一步就会拉出85%的全表数据,再在这海量数据里过滤date,磁盘IO和内存开销都会大幅增加,效率远低于前者。

二、仅过滤type=C时的索引选择

这种场景下**(type, date)索引更优**,理由如下:

  • type=C仅占全表5%的数据,(type, date)索引的第一个字段是type,等值匹配type=C时,能直接定位到这5%的索引条目,瞬间过滤掉95%的无关数据,查询效率极高。
  • 如果用(date, type)索引,由于type是索引的第二个字段,数据库无法直接通过type=C快速定位,只能遍历所有date分组下的type值,相当于做一次索引全扫描,性能差距明显。

内容的提问来源于stack exchange,提问作者Zizou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:44:53