我有一个文件,它遍历一个大型数据集并以分页方式拆分行。该数据集包含大约 21 万行,这还不算多,几周后将增长到 300 万行以上,但速度已经很慢了。
我有第一个查询,用于获取数据库中特定 WHERE 子句组合的项目总数,最基本的查询如下所示:
SELECT count(v_id) as num_items FROM versions
WHERE v_status = 1
运行需要 0.9 秒。
第二个查询是 LIMIT 查询,用于获取该页面的实际数据。这个查询真的很快。 (小于 0.001 秒)。
SELECT
v_id,
v_title,
v_desc
FROM versions
WHERE v_status = 1
ORDER BY v_dateadded DESC
LIMIT 0, 25
在 v_status、v_dateadded 上有一个索引
我用的是php。我将结果缓存到 memcace 中,因此后续请求非常快,但第一个请求很滞后。特别是当我在那里进行全文搜索时,两个查询开始需要 2-3 秒。
最佳答案
我认为这是不对的,但尝试将其设置为 count(*),我认为 count(x) 必须遍历每一行并仅计算那些没有空值的行(所以它必须遍历所有行)
鉴于 v_id 是主键,它不应该有任何空值,因此请尝试使用 count(*)...
但我认为这不会有帮助,因为你有一个 where 子句。
关于php - 从 mysql 表获取记录总数 - 太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346018/