A-mysql索引

# 索引:查询时,快速定位包含目标条件的行
#在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.索引使用原则:**
-- 表数据量大,查询频繁,单列不同值较多的情况下可以建立索引
--                        单列重复值很多时,一次查询会定位到多行,没有太大意义
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值