|
' y5 S+ v# J* Z! I; f1 m
索引(Index)是帮助 MySQL 高效获取数据的数据结构常见的查询算法,顺序查找,二分查找,二叉排序树查找,哈希散列法,分块查找,平衡多路搜索树 B 树(B-tree),索引是对数据库表中一个或多个列的值进行排序的结构,建立索引有助于快速获取信息。 - G& Q+ Y% J8 ? L- Z, q
你也可以这样理解:索引就是加快检索表中数据的方法数据库的索引类似于书籍的索引在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。 $ o) \6 a) Z- d7 d6 ^! H+ B
mysql 有4种不同的索引:主键索引(PRIMARY)唯一索引(UNIQUE)普通索引(INDEX)全文索引(FULLTEXT)索引并非是越多越好,创建索引也需要耗费资源,一是增加了数据库的存储空间,二是在插入和删除时要花费较多的时间维护索引
5 A8 V8 D- {4 A' [6 g. D 索引加快数据库的检索速度索引降低了插入、删除、修改等维护任务的速度唯一索引可以确保每一行数据的唯一性通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能索引需要占物理和数据空间索引的常见原则1. 选择唯一性索引,唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。 % d* o8 r9 t1 `9 G& O) S0 R
2. 为经常需要排序、分组和联合操作的字段建立索引3. 为常用作为查询条件的字段建立索引4. 限制索引的数目:越多的索引,会使更新表变得很浪费时间尽量使用数据量少的索引5. 如果索引的值很长,那么查询的速度会受到影响。
2 U. X; D' g4 ~+ k% o& S: o 尽量使用前缀来索引6. 如果索引字段的值很长,最好使用值的前缀来索引7. 删除不再使用或者很少使用的索引8. 最左前缀匹配原则,非常重要的原则9. 尽量选择区分度高的列作为索引区分度的公式是表示字段不重复的比例。
8 C+ T9 v+ Y7 { ^# g) O& z0 p 10. 索引列不能参与计算,保持列“干净”:带函数的查询不参与索引。11. 尽量的扩展索引,不要新建索引 / c5 F2 i6 c6 I7 ^3 `# P1 Q
6 q1 W4 K/ }0 N( j- g) I; I3 @8 V3 P4 x4 |, \3 }' _) k+ r3 G
$ d7 D# H- P$ ?7 Y) B" J/ W Q$ h
$ x2 g; ?1 K- e' c' b4 } |