gpt4 book ai didi

mysql - 为什么 mysql 查询运行缓慢,即使语句上的解释另有说明?

转载 作者:行者123 更新时间:2023-11-29 16:09:42 25 4
gpt4 key购买 nike

这是我的查询

SELECT 
id
FROM
`MyTable`
WHERE
`env` = 'default'
AND (`HTML` = '' OR `HTML` IS NULL)
order by `id` desc
limit 100;

运行解释我会得到:

Possible keys: idx_env  (related to env field in where clause)
Key: id
Key length: 4
Rows: 200
Filtered: 9.50
Extra: using where

从上面的解释中我了解到mySQL将检查200条记录。并且不应该有大的性能问题

但我经常遇到的是 50"的慢查询,实际上在我的 Aurora 集群上激活慢查询日志时,我看到以下报告:

 # Query_time: 49.512712 Lock_time: 0.000065 Rows_sent: 28 Rows_examined: 6795665

似乎没有一致的反馈:从解释中检查的行是 200 行,日志中都是记录...

编辑

env 和 id 字段已建立索引。 HTML 没有被故意索引,因为它是 LONGTEXT 类型

我还想补充一点,有时在工作台上运行查询,它会按预期快速回答,但通常需要 50 英寸才能执行......我对此有点困惑

最佳答案

我不知道您在这里使用的实际索引是什么,但这可能是可以提高查询性能的索引:

CREATE INDEX idx ON MyTable (env, HTML, id);

这将使 MySQL 使用这两个字段有效地过滤掉 WHERE 子句中的匹配项。这个索引还涵盖了您选择的id,它也用于排序。请注意,如果 id 是主键,并且您使用的是 InnoDB 引擎,则可以将索引简化为以下内容:

CREATE INDEX idx ON MyTable (env, HTML);

关于mysql - 为什么 mysql 查询运行缓慢,即使语句上的解释另有说明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55374557/

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