当前位置:  开发笔记 > 后端 > 正文

在查询中仅使用一列时,多列MySQL索引的性能

如何解决《在查询中仅使用一列时,多列MySQL索引的性能》经验,为你挑选了2个好方法。

我对我的数据库有一个查询:

SELECT * FROM expenses WHERE user_id = ? AND dated_on = ?

我在user_iddated_on列上添加了一个索引.当我使用检查索引时SHOW INDEXES FROM expenses,有两行 - 一行的seq_in_index值为1,另一行的seq_in_index值为2.

我的问题是,如果我然后提交一个只使用两个WHERE子句中的一个的查询,例如:

SELECT * FROM expenses WHERE user_id = ?

创建另一个仅对user_id列进行索引的索引有什么好处,或者上面描述的user_id/ dated_onindex是否同样有效使用?

最后,如果使用查询怎么样:

SELECT * FROM expenses WHERE dated_on = ?

seq_in_index在这种情况下,2 的值如何影响索引的使用和性能?



1> Greg..:

MySQL可以使用索引的任何左侧部分.

在您的示例SELECT * FROM expenses WHERE user_id = ?中将使用索引但SELECT * FROM expenses WHERE dated_on = ?不会.

对于3列索引A,B,C,WHERE A = ? AND B = ?将使用A和B上的索引,但WHERE A = ? AND C = ?仅使用A上的索引



2> Ned Batcheld..:

如果user_id和dated_on上的索引确实按此顺序(user_id优先),那么它也将用于user_id查询.您可以使用EXPLAIN进行检查以查看查询的实际策略.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有