Mysql 当行返回限制增加1时,为什么SQL查询的运行时间要长得多?

Mysql 当行返回限制增加1时,为什么SQL查询的运行时间要长得多?,mysql,mariadb,mysql-workbench,Mysql,Mariadb,Mysql Workbench,运行以下查询时: SELECT customers.ID, customers.FNAME, customers.MNAME, customers.LNAME, customers.SUFFIX, addresses.ADDRESS, addresses.CITY, addresses.STATE, addresses.ZIP from db_name.customers INNER JOIN db_name.addresses ON customers.ID=addres

运行以下查询时:

SELECT customers.ID, customers.FNAME, customers.MNAME, customers.LNAME,
    customers.SUFFIX, addresses.ADDRESS, addresses.CITY, addresses.STATE, 
    addresses.ZIP 
from db_name.customers 
INNER JOIN db_name.addresses ON customers.ID=addresses.CID
limit 6607;
当从MySQL workbench连接到AWS RDS上的MariaDB实例时,查询将使用以下元数据结果运行:

6607行返回的持续时间:0.507秒/提取时间:8.524秒

此外,当结果导出到csv文件时,大小约为466KB。但是,当我运行相同的查询时,仅更改最后一行以检索更多行:
限制6608
查询没有完成(我在将近一个小时后将其终止)

此外,我注意到获取时间在
limit4000
limit4001
行之间经历了一个很大的跳跃。 不管这个细节有用与否,我已经在改变行限制(在水平轴上返回的行数)的同时包含了一个获取时间图(垂直轴上的获取时间)。我不明白为什么取回时间似乎是返回行的分段连续(线性)函数:

按行限制散点图提取时间


如果有人知道是什么阻止了我返回6607行以上的内容,我希望得到您的建议。谢谢

看起来4000行填满了一个缓冲区,再多行似乎会导致另一个缓冲区从服务器发送到客户机,从而导致获取时间跳变a)检查可用磁盘空间。b) 添加偏移量时会发生什么情况(例如
limit 100 offset 6600
limit 6607 offset 1000
)。@riggsfully Ok这很有意义。您是否认为6607行之后的查询分解是一个相关问题?关于如何返回超过6607行,您有什么想法吗?谢谢顺便说一句,没有订单的限制。相当meaningless@Solarflare我试过你的建议
limit 100 offset 6600
的获取时间为0.0001秒,但查询持续时间(由workbench报告)为3592.829秒(约1小时)。另一方面,
limit6607 offset 10
的持续时间为0.361秒(与以前的测试一致),但提取从未完成(我在几个小时后将其杀死)。我不知道该怎么看。