# 索引:查询时,快速定位包含目标条件的行
#在mysql库中会有一张表维护索引,记录每个索引值所在的行,因此索引查找比普通顺序查找更快
#mysql默认索引InnoDB
#如果不使用索引,mysql的默认查找规则是从第一行开始读完整张表,表越大,查询花费时间越长
#删除索引:drop INDEX [index_name] on [table_name]
# 1.单列索引
-- 1.1 普通索引 INDEX、key
-- mysql中基本索引类型,没有什么限制;允许出现重复值和空值
ALTER TABLE stu_info
ADD key k_no(stu_no);
-- 1.2 唯一索引 UNIQUE
-- 索引列中的值必须是唯一的,允许有空值NULL
ALTER TABLE stu_info
ADD UNIQUE k_no(stu_no);
-- 1.3 主键索引 PRIMARY KEY
-- 一种特殊的唯一索引,不允许有空值NULL
ALTER TABLE stu_info
ADD PRIMARY KEY k_no(stu_no);
DROP INDEX k_no ON stu_info;
-- 2.组合索引 关键字:key k_no(id,stu_name,stu_no);
-- 组合索引遵循最左前缀原则
ALTER TABLE stu_info
ADD key k_no(id,stu_name,stu_no);
DROP INDEX k_no ON stu_info;
-- 2.1触发索引 三种情况
SELECT * FROM stu_info WHERE id = ?
SELECT * FROM stu_info WHERE id = ? and stu_name = ?
SELECT * FROM stu_info WHERE id = ? and stu_name = ? and stu_no = ?
-- 2.2 不能触发索引 两种情况:
-- 没有查询最左字段
SELECT * FROM stu_info WHERE stu_name = ?
-- 中间断开
SELECT * FROM stu_info WHERE id = ? and stu_no = ?
-- 3.全文索引
-- FULLTEXT
-- 4.空间索引
-- SPATIAL
-- 删除索引
DROP INDEX k_no ON stu_info;
**-- 5.索引优缺点**
-- 所有的MySQL类型都可以被索引,也就是可以给索引以字段设置索引
-- 加快数据查询速度
-- 索引也需要占内存,索引文件可能比数据文件更快达到上限值
-- 创建索引和维护索引都要耗费时间,并且随着数据值的增加所耗费的时间也会增加
-- 对表中的数据进行增删改查时,也需要对索引表修改
**-- 6.索引使用原则:**
-- 表数据量大,查询频繁,单列不同值较多的情况下可以建立索引
-- 单列重复值很多时,一次查询会定位到多行,没有太大意义
A-mysql索引
最新推荐文章于 2024-07-22 14:36:59 发布