Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中使用SQL\u CALC\u FOUND\u行时是否会影响查询速度?_Mysql - Fatal编程技术网

在MySQL中使用SQL\u CALC\u FOUND\u行时是否会影响查询速度?

在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行添加到限制较小的查询会导致查询运行速度大大降低吗 我知道我可以测试这

前几天,我在MySQL中找到了
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在获取实际信息方面比重新查询做得更好。顺便说一句。正如页面提到的,在复制环境中使用该命令也有一些缺点。

因此,本质上它与无限制地运行整个查询是一样的?几乎-将结果集发送到客户端时会有开销,特别是在网络上。另请参阅我的更新一次,如果更新速度相当慢。类似于前面的问题: