gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:40:23 25 4
gpt4 key购买 nike

我对我的数据库有这样的查询:

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_on 索引一样高效?

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

SELECT * FROM expenses WHERE dated_on = ?

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

最佳答案

MySQL可以使用any left portion of an index .

在您的示例中,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 上使用索引

关于sql - 在查询中仅使用一列时多列 MySQL 索引的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com