gpt4 book ai didi

mysql - 如何阻止 LIMIT 减慢查询速度?

转载 作者:行者123 更新时间:2023-11-30 23:07:55 25 4
gpt4 key购买 nike

我创建了一个包含 10 万行的测试表。此查询的执行时间:

SELECT id FROM table

0.032s。如果我为索引为 Normal,BTREE 的整数列添加 GROUP BY 语句,查询的执行时间:

SELECT id FROM table GROUP BY indexedColumn

解释输出:

id | select_type | table | type |    possible keys   | key  | key_len | ref |  rows  | Extra
1 SIMPLE [table] All [indexedColumnKey] null null null 105416 Using temporary; Using filesort

0.073s。由于 GROUP BY,执行时间加倍,但我假设这是正常的?我的问题是,为什么将 LIMIT 添加到查询中,如下所示:

SELECT id FROM table GROUP BY indexedColumn LIMIT 500

解释输出:

id | select_type | table | type |      possible keys    |        key        | key_len | ref |  rows  | Extra
1 SIMPLE [table] index [indexedColumnKey] [indexedColumnKey] 5 null 500 null

将执行时间增加到 0.301s?这是超过 4 倍的减速。

我对 SQL 非常缺乏经验,所以这可能是完全正常的,但对我来说,限制返回的行数会大大降低查询速度似乎有悖常理。

问题:

  1. 这正常吗?
  2. 有什么方法可以阻止 LIMIT 大大降低查询速度吗?

最佳答案

查询 SELECT id FROM table GROUP BY indexedColumn 不使用索引。它显示在您的解释中。但是当你使用 limit 时,就会使用索引。此外,对于实验,您可以使用 SQL_NO_CACHE SELECT SQL_NO_CACHE ....

禁用缓存

关于mysql - 如何阻止 LIMIT 减慢查询速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064486/

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