问题标签 [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.
mysql - 使用 SQL_CALC_FOUND_ROWS 的 Mysql 全文搜索性能
我正在尝试优化我的应用程序中某些查询的性能。
在一个具有多个连接和全文搜索的查询中,我SQL_CALC_FOUND_ROWS
在第一个查询中使用了分页。
不幸的是查询的性能很慢,没有SQL_CALC_FOUND_ROWS
查询大约快 100 倍。
在这种情况下,我有可能获得更好的表现吗?
我尝试了一个不带 的计数查询SQL_CALC_FOUND_ROWS
,但这个查询比SQL_CALC_FOUND_ROWS
-query 慢了一秒。
php - 如何使用准备好的语句获取 SQL_CALC_FOUND_ROWS 值?
我目前正在为如何SQL_CALC_FOUND_ROWS
使用准备好的语句来实现而摸不着头脑。
我正在编写一个分页类,显然我想将 LIMIT 添加到查询中,但还要找到总行数。
这是相关课程的一个示例。
我对如何获得SQL_CALC_FOUND_ROWS
实际价值感到有些困惑?我曾想过添加类似的内容:
但这只给出了一个基于 LIMIT 的数字,所以在上面的例子中它是 3 而不是它应该是完整的 6。
spring - 池连接 + 验证查询 + SQL_CALC_FOUND_ROWS
我的问题是我在 tomcat 上运行的 Web 应用程序经常会抛出以下异常:
所以我想在通过以下配置从池中获取连接之前验证连接:
使用 spring jdbcTemplate 发送以下 2 个查询时:
“SELECT FOUND_ROWS()”查询总是返回 1,因为验证查询是在两者之间执行的(“SELECT 1”)。
有人知道在第二个查询中不使用 COUNT 的情况下解决此问题的方法吗???
mysql - SQL_CALC_FOUND_ROWS 有时不工作
在这种情况下,一切都是正确的,并且行数是真实的......例如,如果它返回 21 个项目......它是真实的......(实际返回的结果是 21)
但在这段代码中:
代码将行数返回给我 63!(比真实的大 3 倍。)
当然,他们都打印实时(不重复)。
怎么了?tnx
我改为这个(在三个or
条件周围添加括号)并且问题解决了。
php - PHP found_rows 查询,它会因相同的同时查询而崩溃吗?
如果我运行一个指定 SQL_CALC_FOUND_ROWS 的查询,因此返回结果的总数而不是 LIMIT 子句中指定的有限数量,它会崩溃(这意味着将返回另一个同时查询的值而不是当前查询的值)。我不知道从不同客户端同时查询数据库是否会混淆结果,这就是我问的原因。这是一个例子:
然后我会运行:
同样,如果另一个客户端正在运行另一个相同类型的查询,则不会FOUND_ROWS()
返回该另一个客户端查询的值?
zend-framework2 - SQL_CALC_FOUND_ROWS + zf2
我正在使用 zf2 中使用 SQL_CALC_FOUND_ROWS 的简单选择语句。代码如下所示并使用量词。
生成的sql如下
截屏:
但由于某些原因,found_rows 始终返回为 0,我不想为分页添加第二个查询。请帮忙。
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 解决方案,这样我们就不必在必要时更改代码。
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。我已经为索引放置了几乎所有必要的列。
我将在这里展示我的架构
就这样!架构......唷。帮我看看德鲁。:)
解释表
统计结果:
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()
总是返回正确的结果。
mysql - 添加 SQL_CALC_FOUND_ROWS 时 MySQL 停止使用索引
我有一个运行速度比它应该慢得多的查询。我已将问题提炼为一个简单的选择语句(出于隐私考虑,某些字段已重命名):
当SQL_CALC_FOUND_ROWS
使用时,查询在大约 0.70 秒内完成,但是当SQL_CALC_FOUND_ROWS
被移除时,查询在大约 0.0005 秒内完成(在这两种情况下SQL_NO_CACHE
都在查询中使用)。
table_a
date
在字段上有一个索引。
显然 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。