索引的基本原理

索引是用来快速地寻找那紫萼具有特定值的记录,如果没有索引,一般来说执行查询是需要遍历整张表。

索引的原理:就是把无序的数据变成有序的查询

(1)把创建了索引的列的内容进行排序
(2)对排序结果生成一张倒排表(保存索引的表)
(3)在倒排表的内容上拼接上数据地址链
(4)在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到数据。

索引设计的原则

查询更快、占用空间更小
(1)适合索引的列是出现在where子句中的列,或者连接子句中指定的列。
(2)基数较小的表,索引效果比较差,没有必要在此建立索引。
(3)使用短索引,如果对长字符串进行索引,应该指定一个前缀长度,这样能够节省大量索引空间,如果搜索词超过索引前缀长度,则使用索引排除不匹配的行,然后检查其他行是否可能匹配。
(4)不要过度索引,索引需要额外的磁盘空间,并降低写操作的性能,在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保证需要的索引有利于查询即可。
(5)更新频繁的字段不适合建立索引。
(6)定义有外键的数据列一定要建立索引。
(7)若是不能有效区分数据的列不适合做索引(如性别,男、女、未知,最多也就三种,区分度太低)。
(8)对于哪些查询中很少涉及的列,重复值比较多的列不适合建立索引。
(9)对于定义为text、image和bit的数据类型的列不要建立索引。

你可能感兴趣的:(数据库)