我是这样的, 调用num_rows(), 不知道行否?
也就是mysql_num_rows();
$sql = "select * from article where source='" . $_GET["source"] . "'";
$sql .= " order by id desc";
$number = $db->num_rows();
$PAGESIZE = 200;

解决方案 »

  1.   

    你说的是MySQL API 里面的“mysql_num_rows()”函数么?
    如果是这个函数,是需要获取查询结果(既构造MYSQL_RES)的,可能就是需要执行你前两行命令,问题是,当数据量非常大的时候,在获取查询结果的时候系统就可能会崩溃,所以通常可能是需要限定一下查询数量,但限制了数量时候,又如何获取数据库中存储的数据条目数呢?
    所以,感觉这种方式可能不能满足我的需求,不知道是不是象我前面所说的情况?
    如果是这个样子的话,请问你还有什么其他的解决方案么?谢谢指教:)
      

  2.   

    我也发现有的表count(*)非常慢,有的表相同多的数据很快,不知道为什么,难道是约束索引之类的影响?
      

  3.   

    你的数据量有多少?我用phpMyAdmin浏览数据显示是这样
    显示行 0 - 29 (533,407 总计, 查询花费 0.0008 秒)
    SELECT * 
    FROM `article` 
    LIMIT 0 , 30我觉得应该是你查询的语法的问题吧?我这里id是做了索引的。显示行 0 - 29 (560,402 总计, 查询花费 0.0270 秒)SQL 查询:
    SELECT * 
    FROM `article` 
    WHERE `id` >5000
    LIMIT 0 , 30用Like的话
    显示行 0 - 0 (1 总计, 查询花费 1.5669 秒)SQL 查询:SELECT * 
    FROM `article` 
    WHERE `id` LIKE 2 
    LIMIT 0 , 30
    就长了,count(*)的话,phpMyAdmin不会提示
    SQL 查询:
    SELECT count( * ) 
    FROM `article` 
    WHERE `id` >5000
    但是不会大于0.1秒 如果是搜索标题这些用like %%的话估计就更慢了。 建议考虑考虑全文检索
      

  4.   

    不知道你的查询针对的是什么
    如果是精确查询
    那对于海量数据我目前也在找寻可循的方法但如果是模糊查询
    大可以估算其可能的数据总量偏移量越大,mysql查询耗费的也就越多对于查询来说,个人可能认为count(*)是相同条件语句下耗费最小的吧(没具体测试过:P)