目录
当数据表中A、B字段做了组合索引,那么单独使用A或B会有索引效果吗?
-
对数据库索引的认识
索引是一种除开在数据物理表之外的特殊数据结构,以某种算法储存着对数据表上某一行数据的引用指针,便于我们对数据的快速访问。
-
索引的分类和区别
普通索引:普通索引唯一的作用就是加快对数据记录的访问速度。
唯一索引:唯一索引用unique关键字声明,唯一索引建立的字段不允许有重复。
主键索引:主键索引在建立物理表的时候创建,一个表只能定义一个主键索引,但是可以同时定义多个物理索引和普通索引。
联合索引:定义一个索引可以包含多个数据类型。
-
索引的底层实现原理
在数据之外,数据库系统还维护着满足特殊查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引(自己总结)。
根据建立索引的字段建立索引表,存放字段值以及对应记录的物理地址,从而在搜索的时候根据字段值搜索索引表的到物理地址直接访问记录(借鉴别人的总结)。
-
什么情况下设置了索引但是无法使用?
1、以%号开头的like语句索引会失效,但是%放在后面是可以使用到索引的
2、or语句前后没有同时使用索引
3、数据类型出现隐式变化(如varchar不加单引号的话可能会自动转换为int型)
-
哪些情况适合建立索引,哪些情况不适合建立索引?
适合:1、查询的时候频繁使用的列
2、需要排序的列
不适合:1、查询中很少使用的列
2、重复值较多的列
-
索引的优点和缺点
优点:1、可以通过创建唯一索引保证某个字段在数据中的唯一性
2、极大加快了数据的查询速度
3、加速表与表之间的连接
4、在使用分组和排序子句进行检索的时候,可以显著减少查询中分组和排序的时间
缺点:1、索引只能建立在表上,不能建立在视图上
2、创建索引和维护索引都需要时间,并且随着数据量的增大和增加
3、索引需要占用物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更加大
4、当对表中的数据进行增加、删除和修改的时候,索引也需要动态的维护,降低了数据的维护速度
-
当数据表中A、B字段做了组合索引,那么单独使用A或B会有索引效果吗?
1、如果建立索引的顺序是 index(A,B),where A=x and B=y 会触发,但是 where B=x and A=y 不会触发
2、单独使用A会触发,单独使用B不会触发