我有一个表计算(id,客户,日期,类型,金额,公司,销售额...) 我有一个关于 date= 的 where 条件的查询?并输入=? 列类型只能有 3 个值:A、B 和 C(其中 85% 的值是 A、10% B 和 5% C) 创建复合索引时的最佳顺序是什么:(日期,类型)或(类型,日期)? (如果我的查询在 type=C 上进行过滤,那么使用索引(类型,日期)是否更好,以便该类型已经过滤掉 95% 的行)
我建议
(type,date)
,因为您不太可能总是在日期列上放置相等谓词 (=
)。如果索引以 date
开头,并且您对其执行了非等式谓词(<
、>
、between
等),那么您将失去在任何后续列上查找的能力 (type
)。如果您有其他仅按日期过滤的查询,那么您当然需要单独针对 date
建立 additional索引。
另一方面,如果您知道您几乎总是在日期列上使用相等谓词(
=
),那么无论哪种方式都不会产生明显的差异。但是,由于您可能会发出一个对 date
进行过滤但对 type
进行过滤而不是 的查询,因此在这种情况下,您可能会考虑
(date,type)
不必创建两个索引,而让一个索引满足这两个目的。对于串联索引列顺序,最重要的是查询模式,而不是基数。