现在做东西要MySQL,希望大家讲一下MySQL支持哪些索引,而且什么时候建什么索引,以及建立在哪些字段上,希望高手老鸟赐教。。
 最好是自己领悟的得出的结论最好。。
Thanks

解决方案 »

  1.   

    这个问题太涉及到的方面太多了
    总的思路:考虑在where、order by、group by 后面涉及到的列上建立索引,有时复合索引(多列组合成索引)可能比单列索引效果更好,尽量在一些列长度比较短的列上建立索引,在一些并发性很强、数据量很大的表上尽量避免在一些序列性很强的列上建立索引,建立索引的同时还要考虑维护索引的代价(这个在大并发、大数据量系统里更要仔细考虑),大概就先想到这些吧。
      

  2.   

    一般where 后面的字段设置索引 初学者
    mysql myisam支持btree 不支持fulltextmemory支持rtree
      

  3.   


    存储引擎  允许的索引类型
     MyISAM     BTREE
     InnoDB      BTREE
     MEMORY/HEAP     HASH, BTREE
     一般是根据你常用的查询来建议索引。
    原则上是表中必须有主键。
    然后根据你的SELECT / UPDATE / DELETE where .... 后的条件建立索引。关于这个,几句话很难讲清楚,建议你看完下面的这些内容后再进行讨论。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. 其它优化技巧
      

  4.   

     ACMAIN_CHM 回答的总是又快又准.