MySQL索引
方式
有几种方式,最常见是B树。还有哈希
使用场合
select或update等带有where时都可以,索引帮助where快速过滤。
适合数据类型
MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则:
- 越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。
- 简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。
- 尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。
匹配
原则:最左匹配。
如在people表有三个字段,name,age,sex。
如果建立3个字段的组合索引,实际(name),(name,age),(name,age,sex)都可以索引。
且可以进行范围匹配,可用like,但注意第一个不要用通配符%。
数据库索引方式选择
如果使用or,则两则都尝试用索引,如果是and,选择限制更强的。
如果数据较少,直接全表扫描。由于索引本身较大,是存储在磁盘中的。
多表查询时也可能会用到。
单列和组合索引
数据库选择索引时,只会选择约束力最强的,如果是三个单列索引,只会选择最强的。
而如果是组合索引(即多个字段建立的),则约束力更强。
注意:
索引建立太多,则每次更新或删除的时候需要更新索引,会慢。
实际操作:
http://www.jb51.net/article/73372.htm
ps:使用explain分析select语句:http://blog.csdn.net/xtdhqdhq/article/details/17582779
参考http://www.cnblogs.com/weizhixiang/p/5914120.html
http://blog.csdn.net/weiwangchao_/article/details/50256673
http://blog.csdn.net/sscssz/article/details/53642083
B树http://blog.codinglabs.org/articles/theory-of-mysql-index.html
http://www.cnblogs.com/tgycoder/p/5077017.html