gpt4 book ai didi

MySQL 限制语法与查询性能

转载 作者:行者123 更新时间:2023-11-29 01:35:37 25 4
gpt4 key购买 nike

我想知道使用限制语法对查询性能有何影响有 180000 行。所以我会使用限制语法来选择数据。所以我想知道限制语法和查询性能之间的关系。

最佳答案

LIMIT 通常可以节省从 MySQL 服务器向请求客户端发送大型结果集的部分成本。如果您只需要几个结果集行,而不是简单地在客户端跳过不需要的行,则最好使用 LIMIT

有一个臭名昭著的性能反模式使用LIMIT。像这样的查询

 SELECT a,whole,mess,of,columns,...
FROM big_table JOIN big_tableb ON something JOIN big_tablec ON something ....
ORDER BY whole, mess DESC
LIMIT 5

在 MySQL 中会浪费服务器资源(时间和 RAM)。为什么?它生成一个大的结果集,然后对其进行排序,然后丢弃除几行以外的所有行。

另一个性能反模式是应用于复杂结果集的LIMIT small_number, big_number。它必须遍历许多行才能获得少量行。

您可以使用延迟连接模式解决这些问题,如下所示:

   SELECT a,whole,mess,of,columns,..
FROM (
SELECT big_table_id
FROM big_table JOIN big_tableb ON something JOIN big_tablec ON something ....
ORDER BY whole, mess DESC
LIMIT 5, 200000
) ids,
JOIN big_table ON ids.big_table_id = big_table.big_table_id
JOIN big_tableb ON something JOIN big_tablec ON something ...

此模式仅对一些 id 值进行排序然后丢弃,而不是一大堆乱七八糟的列。

在结果集通过索引排序的情况下,使用 LIMIT 确实有助于性能。例如,如果您在 datestamp 上有一个索引,并且您这样做了

 SELECT datestamp, col, col
FROM table
ORDER BY datestamp DESC
LIMIT 20

MySQL 查询规划器可以通过 datestamp 索引向后扫描并仅检索二十行。

关于MySQL 限制语法与查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47714385/

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