现在做东西要MySQL,希望大家讲一下MySQL支持哪些索引,而且什么时候建什么索引,以及建立在哪些字段上,希望高手老鸟赐教。。
最好是自己领悟的得出的结论最好。。
Thanks
最好是自己领悟的得出的结论最好。。
Thanks
解决方案 »
- oracle存储过程转MYSQL
- mysql 查询问题
- sql语句检索最大列
- 请问怎样才能将一个表的数据导入到另一个表里,两个表的结构不一样
- mysql批量插入会漏掉一些记录
- Cannot add or update a child row: a foreign key constraint fails (`myznt/answer`, CONSTRAINT `answer_ibfk_1` FOREIGN KEY (`qid`
- MYSQL插入图片
- mysql 如何在图形下创建用户、管理用户、数据库等
- mysql8.0.11官方源码编译不过
- 请问怎么比较mysql两张表的数据是否一致
- 请问mysql如何设置才能使得INSERT语句中的一个字段必须有值,否则无法插入到表中
- 关于MySQL跨服务器查询的问题
总的思路:考虑在where、order by、group by 后面涉及到的列上建立索引,有时复合索引(多列组合成索引)可能比单列索引效果更好,尽量在一些列长度比较短的列上建立索引,在一些并发性很强、数据量很大的表上尽量避免在一些序列性很强的列上建立索引,建立索引的同时还要考虑维护索引的代价(这个在大并发、大数据量系统里更要仔细考虑),大概就先想到这些吧。
mysql myisam支持btree 不支持fulltextmemory支持rtree
存储引擎 允许的索引类型
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. 其它优化技巧