首页 > 解决方案 > 有四个字段的复合索引,需要用到三个

问题描述

我有以下索引:

ALTER TABLE mytable ADD INDEX (first, last, age, gender)

年龄是一个可为空的字段。

我还运行了两个查询:

SELECT * FROM mytable WHERE first=x and last=y and age=z

和:

SELECT * FROM mytable WHERE first=x and last=y and age=z and gender=w

我如何确保两个查询都使用相同的索引?有没有办法传递“假值”或其他东西,所以它总是返回真,例如:

SELECT * FROM mytable WHERE first=x and last=y and age=z and gender=*

这样它就可以自动使用我创建的 4-index。最好的方法是什么?

标签: mysqlsql

解决方案


索引中的键从左到右使用。你所有的条件都是平等的,所以两者都应该使用索引。

MySQL文档很好地解释了如何使用索引。


推荐阅读