例如:select count(0) from table1 where datatime > '2012-07-09 00:00:00';随着数据量的变多,花费的时间会变长有没有什么方法查找100万条数据的总量和查找10万条数据总量所花费的时间差不多

解决方案 »

  1.   

    count难于优化,从硬件方面想想办法
      

  2.   

    count没有办法优化。datetime是否有索引。
      

  3.   

    唯一的方法就是添加索引 datatime 
      

  4.   

    如果仅是 select count(0) from table1 where datatime > '2012-07-09 00:00:00'; ,在DATETIME上有索引的情况下应该不会太慢。贴出你的 explain select count(0) from table1 where datatime > '2012-07-09 00:00:00'; 结果以供分析。
      

  5.   

    +----+-------------+-------+-------+---------------+--------------+---------+---
    ---+------+--------------------------+
    | id | select_type | table | type  | possible_keys | key          | key_len | ref  |  rows  | Extra               |
    +----+-------------+-------+-------+---------------+--------------+---------+---
    ---+------+--------------------------+
    |  1 | SIMPLE      | con_1 | range |     datatime  | datatime     | 4       | NULL | 189292 | Using where; Using index |
    +----+-------------+-------+-------+---------------+--------------+---------+---
    ---+------+--------------------------+
    1 row in set (0.07 sec)还有其他的表用同样的语句,随着数据的变多,花费的时间也会变长
      

  6.   


    1 row in set (0.07 sec);时间是不长,但是我发现随着数据的变多,查询时间也会变长另外,用于网站的数据库查询一般能承受的最长查询时间是多少,不会影响用户体验??
      

  7.   

    比较datetime要求的粒度是多细?
    如果比较datetime的粒度是天,那可以把每天的记录数(在定期在低峰期跑PHP脚本之类的)预先统计好放到一张表里,在用户查询的时候,直接从这张表里取数据 。