文章的原始链接在这里:http://blog.csdn.net/fanweiwei/archive/2009/06/21/4287612.aspx看到第六条铁律的时候,就搞不懂了。是什么意思?“将索引建立在where子句的集合过程中”是说把索引建立在where子句中吗?还有把索引建立在where子句里的语法吗?怎么我从来不知道呢?“对于需要加速或者频繁检索的数据列,可以让这些经常参与查询的数据列按照索引的排序进行查询”的意思是不是如果我要安装列1来检索(假定列1已经建立索引),那么我就要在查询子句中加入"order by 列1"?

解决方案 »

  1.   

    比如你需要
    where col1=??? and col2=???
    则建议创建索引 (col1,col2)如果你要 where col1=??  order by col3
    则建议创建索引 (col1,col3)
      

  2.   

    关键这个MYSQL的文档中介绍得比较详细。可以参考一下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. 其它优化技巧
      

  3.   

    对于这些经常用在Where子句中的数据列,将索引建立在Where子句的集合过程中,对于需要加速或者频繁检索的数据列,可以让这些经常参与查询的数据列按照索引的排序进行查询,以加快查询的时间
    就是where 子句中的字段应该和索引的顺序一致,保证索引能够起效,要不建了索引也白搭。