在MySQL中使用SQL\u CALC\u FOUND\u行时是否会影响查询速度?
前几天,我在MySQL中找到了在MySQL中使用SQL\u CALC\u FOUND\u行时是否会影响查询速度?,mysql,Mysql,前几天,我在MySQL中找到了found_ROWS()()函数及其相应的SQL_CALC_found_ROWS选项。后者看起来特别有用(而不是运行第二个查询来获取行数) 我想知道在查询中添加SQL\u CALC\u FOUND\u行对速度有什么影响 我猜这比运行第二个查询来计算行要快得多,但会有很大不同。另外,我发现限制查询可以使查询速度更快(例如,当您得到1000行中的前10行时)。将SQL\u CALC\u FOUND\u行添加到限制较小的查询会导致查询运行速度大大降低吗 我知道我可以测试这
found_ROWS()
()函数及其相应的SQL_CALC_found_ROWS
选项。后者看起来特别有用(而不是运行第二个查询来获取行数)
我想知道在查询中添加SQL\u CALC\u FOUND\u行
对速度有什么影响
我猜这比运行第二个查询来计算行要快得多,但会有很大不同。另外,我发现限制查询可以使查询速度更快(例如,当您得到1000行中的前10行时)。将SQL\u CALC\u FOUND\u行
添加到限制较小的查询会导致查询运行速度大大降低吗
我知道我可以测试这一点,但我想知道这里的一般做法。我假设对于需要知道行数的查询,它会稍微快一点,但是对于不需要知道的查询,它会产生额外的开销
我能给出的最好建议是在您的开发服务器上试用它,并对差异进行基准测试。每个设置都是不同的。要计算
SQL\u CALC\u FOUND\u ROWS
查询将像未设置限制一样执行,但发送给客户端的结果集将遵守限制
更新:对于只使用索引的COUNT(*)操作,SQL\u CALC\u FOUND\u ROWS
速度较慢()。当我在2008年的MySQL会议上时,一个会议的一部分专门讨论了这一点-在SQL\u CALC\u FOUND\u ROWS
之间进行基准测试,并单独进行选择
我相信结果是SQL\u CALC\u FOUND\u ROWS
没有任何好处-它没有更快,事实上可能更慢。还有第三条路
此外,您并不总是需要这些信息,因此我将使用额外的查询路径
我会尽力找到幻灯片
编辑:人力资源管理,谷歌告诉我,我实际上是在那个会议上写了一篇动态博客:。当内存出现故障时,谷歌会胜出。我建议在开发应用程序时使用尽可能少的专有SQL扩展(或者实际上根本不使用SQL查询)。单独进行查询是可移植的,事实上,我认为MySql在获取实际信息方面比重新查询做得更好。顺便说一句。正如页面提到的,在复制环境中使用该命令也有一些缺点。因此,本质上它与无限制地运行整个查询是一样的?几乎-将结果集发送到客户端时会有开销,特别是在网络上。另请参阅我的更新一次,如果更新速度相当慢。类似于前面的问题: