mysql - 对于包含 OR 的查询,有效的索引策略是什么?

标签 mysql

下面是示例查询,如何使用 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/

相关文章:

mysql - 单个 SQL 可以通过不同的 where 子句获得多个计数,这可能吗?

php - 在 phpMyAdmin 中导入时为 "No database selected"

php - Eloquent 关系和数据库或三向关系

php - 在同一个表mysql中插入多个重复行

php - 我可以关闭未命名的 mysql 连接吗?

php - 通过MySQL建站的优缺点

mysql - 尝试使用 vitess 合并分片时出现错误

java - 在 jpql 查询中创建和填充 pojos 并作为列表获取

java - maven无法添加库

java - 下载和存储图像