php - 从 mysql 表获取记录总数 - 太慢

标签 php mysql count memcached

我有一个文件,它遍历一个大型数据集并以分页方式拆分行。该数据集包含大约 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/

相关文章:

PHP PDO 多列搜索

MySQL将索引计数重置为0

php - 如何使用mysql停止php中的空组

php - 如何在我的开发机器上支持 "AddType x-mapp-php5 .php"

php - YII 报告销售缺失数组

javascript - 如何使用前端 jQuery 更改 MySQL 日期格式

php - 计算两个日期之间超过 1 小时的天数再加 1 天

javascript - 是否有 JS/jQuery 完全递归子节点计数功能?

php - 按位运算 rune 件函数 php

php - 从子查询结果中获取 MAX(value)