什么是索引?
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
索引分为:聚集索引、非聚集索引、唯一索引、(mysql中还有全文索引)
聚集索引:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。
非聚集索引:该索引中索引的逻辑顺序与磁盘上数据行的物理存储顺序不同,一个表中可以拥有多个非聚集索引。
一张表可以有多个唯一索引和非聚集索引,但最多只能有一个聚集索引。
索引可以包含多列。(这叫联合索引)
合理的创建索引能够提升查询语句的执行效率,但降低了新增、删除操作的速度,同时也会消耗一定的数据库物理空间。
索引对数据库系统的负面影响?
创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。
查看数据表定义的所有索引?
USE db_vul_management;
SHOW INDEX FROM tb_port_service;
在执行查询语句的时候如果要看是否启用了索引查询的话,在查询语句前加上explain关键字。
索引原理
根据建立索引的字段建立索引表,存放字段值以及对应记录的物理地址,从而在搜索的时候根据字段值搜索索引表的到物理地址直接访问记录。
当数据表中A、B字段做了组合索引,那么单独使用A或单独使用B会有索引效果吗?(使用like查询如何有索引效果)
看A、B两字段做组合索引的时候,谁在前面,谁在后面,如果A在前,那么单独使用A会有索引效果,单独使用B则没有,反之亦然。同理,mysql在使用like查询的时候只有使用后面的%时,才会使用到索引。
网友评论