gpt4 book ai didi

mysql - 当有更好的索引可用时,如何防止 MySQL 选择一个索引?

转载 作者:行者123 更新时间:2023-11-29 14:41:44 25 4
gpt4 key购买 nike

我有一个包含 30,000 行(并且还在不断增长)的表,我将其与另一个表连接起来。在某些页面上,我需要运行大约 100 多个这样的查询,而且速度会变得很慢。如果我EXPLAIN查询,我注意到一个表使用主键并且速度很快,但另一个表使用其索引之一,这不是最好的索引。概述如下:

简单 | acc_entries |引用|分类帐,日期,类型,状态,status_ledger_date_type |类型 | 1 |常量 | 15359 | 15359使用哪里

这是一个示例查询:

SELECT SUM(usd) AS total FROM acc_entries
LEFT JOIN acc_ledgers ON acc_entries.ledger = acc_ledgers.id
WHERE acc_entries.status = 1 AND
acc_ledgers.account = 3004 AND
date >= '2011-01-01' AND
date <= '2011-08-30' AND
type = 'credit'

如您所见,我在 WHERE 中使用字段 statusledger(这是与 acc_ledgers.account 连接的字段) >)、日期类型。所有这些字段都有索引。然而,还有一个特定的索引以相同的顺序用于所有这些索引。它被称为status_ledger_data_type,正如你所看到的,它是MySQL考虑使用的索引之一。然而,最终 MySQL 选择使用 type 作为索引。它有大约 15,000 行可能的行(表的一半),而另一个组合索引仅包含其中的一小部分。所以我的问题是:当有更好的索引可用时,为什么 MySQL 会选择这个索引,以及如何防止这种情况发生?

最佳答案

关于mysql - 当有更好的索引可用时,如何防止 MySQL 选择一个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7859710/

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