– 索引。
-
什么是索引:提高查询效率的一种技术
-
原理:根据某一列(字段)进行分段、排序,通过避免全表扫描提高查询效率、
-
普通索引、唯一索引
普通索引:Mysql基本类型,字段值可以重复
唯一索引:字段的值不能重复(可以为空) -
单列索引,,组合索引
单列索引:一个索引只包含一个字段
组合索引:一个索引包含多个字段 -
聚集索引、非聚集索引
聚集索引(cluster index):索引的键值顺序和数据顺序是一致的
非聚集索引:索引的键值顺序和数据顺序是不一致的 -
如何创建索引
-语法: index | unique | primary key
create table index_test(
id int primary key,
cero_no varchar(32),
name varchar(32),
unique(cero_no),index(name)
);查看索引:
show index from index_test;
insert into index_test values
(1,‘0001’,‘Jerry’);
insert into index_test values
(2,‘0001’,‘Jerry’); -
删除索引
语法:drop index 索引名称 on 表名称
示例:
drop index cero_no on index_test;
drop index name on index_test; -
修改表的方式添加索引
语法:create 索引类型 索引名称 on 表(字段)
示例:
– 在index_test表creo_no 字段创建唯一索引
create unique index idx_cero_no
on index_test(cero_no);
第一步:利用现有的orders表,插入如10万笔数据
执行insert_orders_many.py文件
第二步:在没有索引的情况下查询,条件如下:
orders_id = ‘2018010100000002’
orders_id = ‘2018010100055555’
orders_id = ‘2018010100099996’
第三步:给orders表添加索引
create index idx_orders_id on orders(order_id)
在执行第二步的查询,查看执行时间
备注:如果执行文件报错。检查连接参数
核对字段的名称。顺序。类型
pymysql导入出错。因为减少了pymysql模块,更换到教学机上执行 -
索引的优缺点
优点
提高查询效率
唯一索引能够不保证数据的唯一性
可能提高分组排序的效率
缺点
降低增、删、改的效率(调整索引结构的开销)
对表中的数据进行增删改查的操作,
需要增加额外的储存空间 -
索引使用注意事项
总体原则
在合适的字段上,建立合适的索引
索引不能太多。过多的索引会降低增删改的效率适合使用索引的情况
在经常进行查询、排序、分组的字段上建立索引
数据分布比较均匀。连续的字段,适合建立索引
查询操作较多的表。适合建立索引不适合建立索引的情况
数据量太少的表不适合建立索引
增删改操作较多的表。不适合建立较多的索引
某个字段取值范围很少。不适合建立索引
某个字段很好用作处查询。排序、分组,不适合建索引索引失效:表中有索引,但是表中查询的时候没有使用
没有使用索引字段作为条件
在条件判断中使用了<>符号
条件判断语句中使用了null值判断
模糊查询%前置