select record_minute, max(query_per_second),domain_name,query_per_second,delay from top_normal_domain_minute where record_minute between unix_timestamp('2009-11-03 13:31:29') and  unix_timestamp('2009-11-12 13:31:32') group by domain_name order by max(query_per_second) desc limit 0,10;
大家请看,这条sql语句的语义是,查询数据库表中某时间段内,查询量(wyery_per_second)最多的域名(排在前10的)。
但是执行这条sql语句的时候却发现速度异常得慢,怎么优化它。我的qq:346985049,一直在,如果有高手看到的话,请帮帮我

解决方案 »

  1.   

    索引情况、EXPLAIN SQL语句,贴记录及要求结果出来看看
      

  2.   

    这个东西不是一言两语能说得清楚的,你可以参考下下面这个找点启发吧:
    http://topic.csdn.net/u/20091031/18/f86637e7-06be-403c-b6b8-56904920751b.html?59522
      

  3.   

    他那里面的方法也还是有问题,因为上一分钟和下一分钟统计到的域名可能会有相同的,所以我才group by domain_name 的。。就算设计一个汇总表,效率也不会快的
      

  4.   

    创建 基于 record_minute 的索引create index idx_top_normal_domain_minute_1 on top_normal_domain_minute(record_minute);做优化之前你需要查看show index from top_normal_domain_minute;
    explain 
    select record_minute, max(query_per_second),domain_name,query_per_second,delay 
    from top_normal_domain_minute 
    where record_minute between unix_timestamp('2009-11-03 13:31:29') 
    and  unix_timestamp('2009-11-12 13:31:32') 
    group by domain_name 
    order by max(query_per_second) desc limit 0,10;相关的信息。
      

  5.   

    http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#query-speed
    7.2. 优化SELECT语句和其它查询
    7.2.1. EXPLAIN语法(获取SELECT相关信息)
    7.2.2. 估计查询性能
    7.2.3. SELECT查询的速度
    7.2.4. MySQL怎样优化WHERE子句
    7.2.5. 范围优化
    7.2.6. 索引合并优化
    7.2.7. MySQL如何优化IS NULL
    7.2.8. MySQL如何优化DISTINCT
    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN
    7.2.10. MySQL如何优化嵌套Join
    7.2.11. MySQL如何简化外部联合
    7.2.12. MySQL如何优化ORDER BY
    7.2.13. MySQL如何优化GROUP BY
    7.2.14. MySQL如何优化LIMIT
    7.2.15. 如何避免表扫描
    7.2.16. INSERT语句的速度
    7.2.17. UPDATE语句的速度
    7.2.18. DELETE语句的速度
    7.2.19. 其它优化技巧
    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html