sql索引及约束

一:什么是索引: 

    MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。

二:索引种类介绍及使用:

1介绍:

1,普通索引:最基本的索引,没有任何限制,是我们经常使用到的索引。

2,唯一索引:与普通索引类似,不同的是,唯一索引的列值必须唯一,但允许为空值。

3,主键索引 : 主键索引是特殊的唯一索引,不允许有空值。

4,全文索引:全文索引(FULLTEXT)仅可以适用于MyISAM引擎的数据表,作用于CHAR,                                VARCHAR、TEXT数据类型的列。

5、组合索引(联合索引):将几个列作为一条索引进行检索,使用最左匹配原则。

2.使用:

  • INDEX(普通索引)

alter table 数据库add index 索引名称(数据库字段名称)

  • PRIMARY KEY(主键索引)

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

  • UNIQUE(唯一索引)

ALTER TABLE `table_name` ADD UNIQUE (`column`)

  • FULLTEXT(全文索引) 

mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 

  • 联合索引

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

 

  • 查看索引      show index from 数据库表名
  • 删除索引      DROP INDEX <索引名> ON <表名> 

 

3.问题

(1)mysql 联合索引  复合索引命中规则:

    https://jingyan.baidu.com/article/77b8dc7f2844402074eab6de.html

  (2) 还有一个特殊情况说明下,下面这种类型的SQL, a 与 b 会走索引,c不会走。  

select * from LOL where a = 2 and b > 1000  and c=3;

 

(3) ORDER BY

 

a = 某,后面order 无所谓 都 使用索引 (和最上面的最左匹配一样)
 

a = 1 AND b = 2 AND c = 3 ORDER BY a;// 或者 ORDER BY b , ORDER BY c ,ORDER BY d, 使用索引
a = 1 ORDER BY a; // 或者 ORDER BY b,ORDER BY c,ORDER BY d 使用abc索引

 

b = 某,不使用

b = 1 ORDER BY a; //ORDER BY b 都 未使用索引

 

查询在什么时候不走(预期中的)索引

  • 模糊查询 %like
  • 索引列参与计算,使用了函数
  • 非最左前缀顺序
  • where对null判断
  • where不等于
  • or操作有至少一个字段没有索引
  • 需要回表的查询结果集过大(超过配置的范围)

唯一索引与普通索引那个更快?


答: 查询时 : 普通索引与唯一索引之间的性能差异可以忽略。    

      更新语句时:普通索引比唯一索引要快, 因为普通索引不要判断有没有唯一值的冲突。 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值