mysql - 是否需要在 WHERE 子句中使用 INDEX 第二列?

标签 mysql sql select indexing

考虑使用

获取数据
SELECT * FROM table WHERE column1='XX' && column2='XX'

Mysql会过滤匹配WHERE子句第一部分的结果,然后是第二部分。我说得对吗?

假设第一部分匹配 10 条记录,添加第二部分过滤 5 条记录。是否也需要 INDEX 第二列?

最佳答案

您在谈论短路评估。DBMS 具有基于成本的优化器。 保证这两个条件中的哪一个会首先得到评估。

将其应用于您的问题:是的,为您的第二列编制索引可能是有益的。

  • 是否经常在搜索中使用它?
  • 执行计划告诉你什么?
  • 访问模式是否会在不久的将来发生变化?
  • 该表包含多少条记录?
  • 覆盖索引会是更好的选择吗?
  • ...

关于mysql - 是否需要在 WHERE 子句中使用 INDEX 第二列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9567445/

相关文章:

mysql - SQL获取所有n :th rows depending on related table value

php - mysql 从多个表中选择,即使一个表不包含 where 子句

php - POST 西里尔字母 PHP 产生特殊字符

sql - 在不使用 DISTINCT 子句的情况下获得不同的结果

php - 将数据从一个 PHP 文件发布到另一个文件会出错

使用别名更新 SQLite

mysql - 如何按时间范围对员工进行分组?

mysql - 将一张 table 与另外 3 张 table 合并

mysql - Hibernate 查询比较日期(最多过去 10 个月)

mysql - 导入具有 `max_allowed_packet` 限制问题且没有管理员访问权限的数据库