作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的查询
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/
我是一名优秀的程序员,十分优秀!