gpt4 book ai didi

sql - 让 SQL 使用正确的索引

转载 作者:可可西里 更新时间:2023-11-01 07:24:21 25 4
gpt4 key购买 nike

我有一个表有两个索引,其中一个是某个查询的更快覆盖索引。但是,mySQL (5.1) 没有选择正确的索引。我查看了此查询的解释并进行了一些速度测试,如果您强制使用该键,结果会大不相同。

是否有任何方法可以检查它如何选择索引以及它基于什么标准?

最佳答案

这将使用您需要的索引(如果它可用):

SELECT  *
FROM table FORCE INDEX (myindex)

MySQL 收集并使用表统计信息来估计索引的基数。

它将其保存在 information_schema.statistics 中。

在可用于过滤的两个索引中,MySQL 选择基数较大的一个。

如果有两个基数很大的索引,它可以选择INDEX MERGE来覆盖它们。

在一个索引可以服务于WHERE条件,另一个索引可以服务于ORDER BYMySQL似乎更喜欢第一个

然而,在后一种情况下,最好在两个列上创建一个复合索引,这样可以为两个子句提供服务。

关于sql - 让 SQL 使用正确的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/925589/

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