day03如何使用索引

  索引在MySQL中也叫键(key)是存储引擎用于快速找到记录的一种数据结构。索引优化应该是对查询性能优化的最有效手段。

1.索引基础。

  索引的工作就相当于书的目录,能帮助我们快速定位到想要找到的内容。如果一个数据库表在主键上有索引,则查询会根据id值返回查索引,返回数据行。

索引可以包含一个或者多个列的值。如果索引包含多个列,那么列的顺序也十分重要,因为Mysql只能高效的使用索引的最左前缀列。

1.1.1

  索引有很多种类型可以为不同的场景提供更好的性能,在MySQL中索引是在存储引擎层而非服务器层实现,所以没有统一的标准。

B-Tree索引

InnorDB使用的是B+tree,对索引列是顺序组织的存储的,所以很适合查找范围数据,这种效率比较高。

索引对多个值进行排序的依据是CREAT_TABLE语句中定义索引时列的顺序。

哈希索引

哈希索引是基于哈希表实现的,只有精确匹配索引所有列的查询才有效。在MySQL中,只有Memory引擎现实的支持哈希索引。

哈希索引查找非常快,但是并不是按照索引值顺序存储的,所以就无法用于排序。出现哈希冲突时,将以链表的形式进行存储。

例:假如需要存储大量的URL,并需要根据URL进行搜索查找。如果使用B-tree存储,存储内容就会特别大,因为URL本身很长。

则可以新增加带索引的哈希列,缺陷是需要手动维护哈希列的值。解决办法可以用触发器,在新增修改时,同步更新哈希列的值。、

可以自己定义一个哈希算法,如MD5(),截取固定长度值。

2.索引的优点

最常见的B-tree索引,按照属性存储数据,所以MySQL可以用来做orderBy和group by操作。

总结下来索引的优点:

1.索引大大减少服务器需要扫描的数据量。

2.索引可以帮助服务器避免排序和临时表。

3.索引可以将随机I/O变为顺序IO。

 

posted @ 2021-01-02 20:01  山沟君  阅读(79)  评论(0)    收藏  举报