一、索引如何实现 1.索引的创建 ① 在创建表的时候添加索引 CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); ②在创建表以后添加索引 ALTER TABLE my_table ADD [UNIQUE] INDEX index_name(column_name); 或者 CREATE INDEX index_name ON my_table(column_name); 2.索引的理解 索引是一种利用某种规则的数据结构与实际数据的关系加快数据查找的功能;索引数据节点中有着实际文件的位置,因为索引是根据特定的规则和算法构建的,在查找的时候遵循索引的规则可以快速查找到对应数据的节点,从而达到快速查找数据的效果;其实宏观来说索引其实是一种概念而不是具体的某项技术,只是我们在某个技术中运用得比较广泛和鲜明(比如说数据库)渐渐的有了特定领域的标签,其实在生活中索引的使用无处不在,比如说:书本里的目录;读书时的座位号,考试编号都有类似索引的功能; 总结来所有通过某规则数据结构和实际目标关联,根据特定规则算法快速寻址的功能都可以称之为索引; 3.索引的优缺点 优点:
创建索引可以大大提高系统的性能。 一、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 二、可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 三、可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 四、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 五、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
一、增加了数据库的存储空间。 二、在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。数据库索引就是为了提高表的搜索效率而对某些字段中的值建立的目录 。
二、索引的使用场景,根据不通的业务需求,合理创建索引: (1)什么场景不要用索引: 1、数据更新性能比查询性能要求要高的情况下不要使用索引,因为数据的更新的同时索引也要进行维护和更新(加了索引查询快但更新就会慢); 2、不要盲目的给表建太多索引,因为索引本身的存储也要占用存储空间,一旦更新操作频繁反而降低新性能; 3、不要给不经常使用的列建索引,不怎么查询还建索引干嘛; 4、不要给高重复值的列建索引,索引本身就是为了提高查询速度,然而数据值高度重复,数据区别性不高,索引起不了效果)(比如说:性别); 5、不要给img,tex.bit数据类型使用索引,因为这种字段一般使用很少,数据量太大;
(2)什么场景用索引 1、经常要用于查询的列 where id=?; 2、经常要用于排序(order by),分组(group by)的列,因为索引已经排好序了; 3、有值唯一性限制的列,比如说主键、用户名;
----
更多资料请查看
https://zhuanlan.zhihu.com/p/27789389
https://blog.csdn.net/tongdanping/article/details/79878302
----
|