下面是示例查询,如何使用 or 子句添加索引?
select fild1,fld2
from tablename
where (field3='XXXX' or field4='YYYY') and field6='xdffgfd';
下面的索引有效吗?
ALTER TABLE tablename ADD INDEX ind_name(field3,field4,field6);
最佳答案
没有。这不是一个好的索引策略。您建议的复合索引适用于 field3
查找,但不适用于 field4
查找。
为此,您需要在 field4
上建立一个单独的索引。如果您除了 (field3,field6)
索引之外还提供复合 (field4, field6)
索引,您将优化 OR
的两个部分> 子句用于查找,但您会在插入和更新方面产生开销。
关于mysql - 对于包含 OR 的查询,有效的索引策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12393214/