mysql高级学习之索引的优劣势及规则使用
一、索引的优劣势
优点:可以快速的检索 、可以加快分组和排序
缺点:占用储存空间、降低数据表的修改操作
二、索引的分类
主键索引 | 即主索引,根据主键pk_clolum(length)建立索引,不允许重复,不允许空值 |
---|---|
唯一索引 | 用来建立索引的列的值必须是唯一的,允许空值 |
普通索引 | 用表中的普通列构建的索引,没有任何限制 |
全文索引 | 用大文本对象的列构建的索引 |
全文索引 | 用大文本对象的列构建的索引; |
组合索引 | 用多个列组合构建的索引,这多个列中的值不允许有空值。 |
三、使用索引的规则
1、适合建立索引的情况
- 主键自动建立唯一索引;
- 经常作为查询条件在WHERE或者ORDERBY语句中出现的列要建立索引;
- 作为排序的列要建立索引;
- 查询中与其他表关联的字段,外键关系建立索引;
- 高并发条件下倾向组合索引;
- 用于聚合函数的列可以建立索引,例如使用了max(column_1)或者count(column_1)时的column_1就需要建立索引。
2、不适合建立索引的情况
- 经常增删改的列不要建立索引;
- 有大量重复的列不建立索引;
- 表记录太少不要建立索引。
3、索引失灵的情况
- 在组合索引中不能有列的值为NULL,如果有,那么这一列对组合索引就是无效的;
- LIKE操作中,'%aaa%'不会使用索引,也就是索引会失效,但是‘aaa%'可以使用索引;
- 在索引的列上使用表达式或者函数会使索引失效;
- 在查询条件中使用不等于,包括<符号、>符号和!=会导致索引失效;
- 在查询条件中使用ISNULL或者ISNOTNULL会导致索引失效;
- 字符串不加单引号会导致索引失效;
- 在查询条件中使用OR连接多个条件会导致索引失效,除非OR链接的每个条件都加上索引;
- 如果排序的字段使用了索引,那么select的字段也要是索引字段,否则索引失效;
- 尽量不要包括多列排序,如果一定要,最好为这队列构建组合索引。
四、关于索引的SQL
1、创建表的时候添加索引
--创建表的时候添加索引 --INDEX关键词 --myindex索引的名称自己起的 --(username(16))添加到哪一个字段上 CREATETABLEmytable( IDINTNOTNULL, usernameVARCHAR(16)NOTNULL, INDEXmyindex(username(16)) );
2、创建表过后添加索引
--添加索引 --myindex索引的名字(自己定义) --mytable表的名字 CREATEINDEXmyindexONmytable(username(16)); 或者 ALTERTABLEmytableADDINDEXmyindex(username);
3查看索引
--mytable表的名字 showindexFROMmytable;
4、删除索引
--myindex索引的名字(自己定义) --mytable表的名字 DROPINDEXmyindexONmytable; 或者 ALTERTABLEmytableDROPINDEXmyindex;
总结
到此这篇关于mysql高级学习之索引的优劣势及规则使用的文章就介绍到这了,更多相关mysql高级索引内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。