问题标签 [sql-calc-found-rows]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
381 浏览

mysql - 使用 SQL_CALC_FOUND_ROWS 的 Mysql 全文搜索性能

我正在尝试优化我的应用程序中某些查询的性能。

在一个具有多个连接和全文搜索的查询中,我SQL_CALC_FOUND_ROWS在第一个查询中使用了分页。

不幸的是查询的性能很慢,没有SQL_CALC_FOUND_ROWS查询大约快 100 倍。

在这种情况下,我有可能获得更好的表现吗?

我尝试了一个不带 的计数查询SQL_CALC_FOUND_ROWS,但这个查询比SQL_CALC_FOUND_ROWS-query 慢了一秒。

0 投票
2 回答
3453 浏览

php - 如何使用准备好的语句获取 SQL_CALC_FOUND_ROWS 值?

我目前正在为如何SQL_CALC_FOUND_ROWS使用准备好的语句来实现而摸不着头脑。

我正在编写一个分页类,显然我想将 LIMIT 添加到查询中,但还要找到总行数。

这是相关课程的一个示例。

我对如何获得SQL_CALC_FOUND_ROWS实际价值感到有些困惑?我曾想过添加类似的内容:

但这只给出了一个基于 LIMIT 的数字,所以在上面的例子中它是 3 而不是它应该是完整的 6。

0 投票
1 回答
3625 浏览

spring - 池连接 + 验证查询 + SQL_CALC_FOUND_ROWS

我的问题是我在 tomcat 上运行的 Web 应用程序经常会抛出以下异常:

所以我想在通过以下配置从池中获取连接之前验证连接:

使用 spring jdbcTemplate 发送以下 2 个查询时:

“SELECT FOUND_ROWS()”查询总是返回 1,因为验证查询是在两者之间执行的(“SELECT 1”)。

有人知道在第二个查询中不使用 COUNT 的情况下解决此问题的方法吗???

0 投票
1 回答
452 浏览

mysql - SQL_CALC_FOUND_ROWS 有时不工作

在这种情况下,一切都是正确的,并且行数是真实的......例如,如果它返回 21 个项目......它是真实的......(实际返回的结果是 21)

但在这段代码中:

代码将行数返回给我 63!(比真实的大 3 倍。)

当然,他们都打印实时(不重复)。

怎么了?tnx


我改为这个(在三个or条件周围添加括号)并且问题解决了。

0 投票
0 回答
60 浏览

php - PHP found_rows 查询,它会因相同的同时查询而崩溃吗?

如果我运行一个指定 SQL_CALC_FOUND_ROWS 的查询,因此返回结果的总数而不是 LIMIT 子句中指定的有限数量,它会崩溃(这意味着将返回另一个同时查询的值而不是当前查询的值)。我不知道从不同客户端同时查询数据库是否会混淆结果,这就是我问的原因。这是一个例子:

然后我会运行:

同样,如果另一个客户端正在运行另一个相同类型的查询,则不会FOUND_ROWS()返回该另一个客户端查询的值?

0 投票
1 回答
522 浏览

zend-framework2 - SQL_CALC_FOUND_ROWS + zf2

我正在使用 zf2 中使用 SQL_CALC_FOUND_ROWS 的简单选择语句。代码如下所示并使用量词。

生成的sql如下

截屏: 在此处输入图像描述

但由于某些原因,found_rows 始终返回为 0,我不想为分页添加第二个查询。请帮忙。

0 投票
1 回答
1676 浏览

mysql - 如何避免错误“SQL_CALC_FOUND_ROWS 的使用/放置不正确”?

我们的应用程序中有两个查询,第一个很长,需要 30 秒,然后另一个查询 LIMIT 之前的行数:

如果我们取出“ORDER BY fqa_value”,我们可以将速度从 30 秒优化到 1 秒。

所以我把所有东西都放在一个子选择中,然后对其进行排序:

但是,这给了我错误:“SQL_CALC_FOUND_ROWS 的使用/放置不正确”。

如果我取出 SQL_CALC_FOUND_ROWS,它会起作用:

但是我没有在 GROUP BY 和 HAVING 之前选择的原始行数。

我如何才能(a)计算原始行数和(b)快速查询?我正在寻找一个纯粹的 MySQL 解决方案,这样我们就不必在必要时更改代码。

0 投票
3 回答
1151 浏览

mysql - UNION 上的 SQL_CALC_FOUND_ROWS 以获取总行,但子查询上有 LIMIT

我正在使用 MySQL 并有两个单独的表,PRE_REGISTERED 和 REGISTERED,我想使用 UNION 查询它们以获得整个组合结果。我也使用限制进行分页。最后,我想使用 SQL_CALC_FOUND_ROWS 获取总行进行分页。但是,我的数据在 PRE_REGISTERED 上非常大,大约有 160,000 行。如果我 UNION ALL 即使我将数据限制为每页 10 行,查询仍然需要很长时间(大约 6 秒)。像这样的查询

然后我尝试将 LIMIT 放在每个子查询上,结果令人着迷(大约 0.5 秒),但分页变得一团糟。

查询是这样的:

有没有办法在子查询中使用 LIMIT 来获得总行?

我决定提出整个查询,但它很长。我希望有人能发现错误并帮助我。我完全被困住了。

我的实际 SQL 查询

联合所有(

PS。我已经为索引放置了几乎所有必要的列。

我将在这里展示我的架构

就这样!架构......唷。帮我看看德鲁。:)

解释表

统计结果:

0 投票
4 回答
1093 浏览

php - MySQL / PDO FOUND_ROWS() 有时会错误地返回 0

我们有一个以前在 PHP 5.4 下运行的 laravel 4.1 应用程序,但是自从升级到 5.6.13(今天升级到 5.6.14)后,我注意到查询有时开始返回 0 FOUND_ROWS()。在我们的一些查询中,它似乎是断断续续的,但在其他查询中,它更像是一个永久性问题。

受影响最大的集合是带有子查询的集合。

我们正在使用 PDO(我们没有使用 laravel 模型,只是直接与其 PDO 对象交互)。MySQL 在这个时间范围内也没有被修改。

尝试了各种方法 - 一个建议是将跟踪模式设置为 0,但这并没有帮助。我尝试设置PDO::MYSQL_ATTR_USE_BUFFERED_QUERY为 false,但是当您尝试选择时会导致 PDO 错误FOUND_ROWS()(现在无法获得确切的消息)。

没有回滚到 5.4(请上帝不),我完全被卡住了......

直接在 MySQL 中运行这些查询,然后运行FOUND_ROWS() 总是返回正确的结果。

0 投票
0 回答
521 浏览

mysql - 添加 SQL_CALC_FOUND_ROWS 时 MySQL 停止使用索引

我有一个运行速度比它应该慢得多的查询。我已将问题提炼为一个简单的选择语句(出于隐私考虑,某些字段已重命名):

SQL_CALC_FOUND_ROWS使用时,查询在大约 0.70 秒内完成,但是当SQL_CALC_FOUND_ROWS被移除时,查询在大约 0.0005 秒内完成(在这两种情况下SQL_NO_CACHE都在查询中使用)。

table_adate在字段上有一个索引。

显然 SQL_CALC_FOUND_ROWS可以防止使用索引:

因此,从这个简单的测试中得出的明显结论是:当我们在查询中为 WHERE/ORDER 子句提供适当的索引时,使用两个单独的查询而不是一个使用 SQL_CALC_FOUND_ROWS 的查询要快得多。

我已经证实了这一点。包含时不使用索引SQL_CALC_FOUND_ROWS

但是当SQL_CALC_FOUND_ROWS不使用时,则使用日期字段上的索引:

有没有办法在不从查询中删除的情况下加快查询速度SQL_CALC_FOUND_ROWS

我正在使用 MySQL 版本 5.0.51a-3ubuntu5.1-log。