1. 同样的SQL, 有时运行很快,有时运行很慢。是为什么?2. 多表联合查询时, 表的前后顺序对查询速度是否有影响?

解决方案 »

  1.   

    1. 同样的SQL, 有时运行很快,有时运行很慢。是为什么? 同一句SQL,再第二次执行的时候MySQL会直接从绶冲区拿数据,不需要再分析执行。所以速度快。
    你可以用 EXPLAIN语法(获取SELECT相关信息) 来查看MySQL是如何根据你的SQL语句来制定执行计划的。
      

  2.   

    2. 多表联合查询时, 表的前后顺序对查询速度是否有影响? 影响很少。理论上MySQL会根据预测的各表返回行数进行优化。但要注意是根据MySQL自己的估算,有时未必准确。 你可以通过 EXPLAIN 来查看,如果MySQL未按照最佳的方案进行,则可以用Analyze table来让MySQL重新分析一下相关的表。 如果还不行则需要用force join来强行指定顺序。总之,表的前后顺序基本上没什么影响。
    如果有兴趣的话,可以看一下MySQL的官方文档。估计需要阅读30-60分钟。http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#query-speed7.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. 其它优化技巧
    
      

  3.   

    1、具体情况是什么,比如连续两次运行SQL语句,第二次就比第一次快;
    2、如果在查询字段上建立索引,基本上没有影响。