mysql索引原理及调优(mysql高级学习之索引的优劣势及规则使用)
类别:数据库 浏览量:493
时间:2021-10-19 06:46:30 mysql索引原理及调优
mysql高级学习之索引的优劣势及规则使用一、索引的优劣势
优点:可以快速的检索 、可以加快分组和排序
缺点: 占用储存空间、降低数据表的修改操作
二、索引的分类
主键索引 | 即主索引,根据主键 pk_clolum(length)建立索引,不允许重复,不允许空值 |
---|---|
唯一索引 | 用来建立索引的列的值必须是唯一的,允许空值 |
普通索引 | 用表中的普通列构建的索引,没有任何限制 |
全文索引 | 用大文本对象的列构建的索引 |
全文索引 | 用大文本对象的列构建的索引; |
组合索引 | 用多个列组合构建的索引,这多个列中的值不允许有空值。 |
三、使用索引的规则
1、适合建立索引的情况
- 主键自动建立唯一索引;
- 经常作为查询条件在 WHERE 或者 ORDER BY 语句中出现的列要建立索引;
- 作为排序的列要建立索引;
- 查询中与其他表关联的字段,外键关系建立索引;
- 高并发条件下倾向组合索引;
- 用于聚合函数的列可以建立索引,例如使用了 max(column_1)或者count(column_1)时的 column_1 就需要建立索引。
2、不适合建立索引的情况
- 经常增删改的列不要建立索引;
- 有大量重复的列不建立索引;
- 表记录太少不要建立索引。
3、索引失灵的情况
- 在组合索引中不能有列的值为 NULL,如果有,那么这一列对组合索引就是无效的;
- LIKE 操作中,'%aaa%'不会使用索引,也就是索引会失效,但是‘aaa%'可以使用索引;
- 在索引的列上使用表达式或者函数会使索引失效;
- 在查询条件中使用不等于,包括<符号、>符号和!=会导致索引失效;
- 在查询条件中使用 IS NULL 或者 IS NOT NULL 会导致索引失效;
- 字符串不加单引号会导致索引失效;
- 在查询条件中使用 OR 连接多个条件会导致索引失效,除非 OR 链接的每个条件都加上索引;
- 如果排序的字段使用了索引,那么 select 的字段也要是索引字段,否则索引失效;
- 尽量不要包括多列排序,如果一定要,最好为这队列构建组合索引。
四、关于索引的SQL
1、创建表的时候添加索引
|
-- 创建表的时候添加索引 -- INDEX 关键词 -- myindex 索引的名称自己起的 -- (username(16))添加到哪一个字段上 CREATE TABLE mytable( ID INT NOT NULL , username VARCHAR (16) NOT NULL , INDEX myindex (username(16)) ); |
2、创建表过后添加索引
|
-- 添加索引 -- myindex索引的名字(自己定义) -- mytable 表的名字 CREATE INDEX myindex ON mytable(username(16)); 或者 ALTER TABLE mytable ADD INDEX myindex(username); |
3 查看索引
|
-- mytable 表的名字 show index FROM mytable; |
4、删除索引
|
-- myindex索引的名字(自己定义) -- mytable 表的名字 DROP INDEX myindex ON mytable; 或者 ALTER TABLE mytable DROP INDEX myindex; |
总结
到此这篇关于mysql高级学习之索引的优劣势及规则使用的文章就介绍到这了,更多相关mysql高级索引内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/m0_55886240/article/details/114576113
您可能感兴趣
- mysql变量技巧(mysql用户变量与set语句示例详解)
- mysql join规则(浅谈为什么MySQL不推荐使用子查询和join)
- mysql索引优化技巧(MySQL如何优化索引)
- mysql允许远程访问docker(Docker部署mysql远程连接 解决2003的问题)
- mysql主从复制如何解决延迟(MySQL 8.0.23中复制架构从节点自动故障转移的问题)
- navicat怎么和mysql连接(Navicat Premium远程连接MySQL数据库的方法)
- mysql分页查询有几种(MySQL 查询的排序、分页相关)
- mysql报错103(解决Mysql报Invalid default value for“operate_time”错误的问题)
- 用mysql语句写python学生管理系统(Python基于mysql实现学生管理系统)
- mysql的存储性能优化(MySQL的查询缓存和Buffer Pool)
- mysql常用数据模型(MySQL数据库基于sysbench实现OLTP基准测试)
- mysql的事务隔离级别怎么实现(mysql、oracle默认事务隔离级别的说明)
- mysql exists的用法(Mysql exists用法小结)
- mysql对null值如何理解(MySQL为Null会导致5个问题个个致命)
- mysql关联查询详解(详解mysql 组合查询)
- mysql是否支持透明数据加密(MySQL的加密解密的几种方式小结)
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
- 杯酒人生---瓦伦丁酒杯和奥丁格啤酒(杯酒人生---瓦伦丁酒杯和奥丁格啤酒)
- 中秋节买啤酒,预算超过7元试试这8种啤酒,麦香浓郁都是真啤酒(预算超过7元试试这8种啤酒)
- CellPress旗下的6 期刊,国人友刊来了解一下吧(CellPress旗下的6期刊国人友刊来了解一下吧)
- ()
- SCI检索 SSCI检索 EI检索 ISTP检索 CSCD检索简介(SCI检索SSCI检索EI检索)
热门推荐
- sqlserver如何可视化表(sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日)
- php添加数据到mysql数据库(PHP通过代码连接XAMPP数据库及MySQL数据库方法)
- css特效边框流线动画(CSS 动画实现动态气泡背景的方法)
- python中tryexcept的用法(对python中的try、except、finally 执行顺序详解)
- apache跳转配置(Apache 的 order deny allow 设置说明)
- mysql 高级用法(MySQL实现replace函数的几种实用场景)
- tomcat服务如何在eclipse中配置(HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法详解)
- python语句for循环(Python基础之循环语句用法示例for、while循环)
- elementui的el-popover修改样式不生效的解决(elementui的el-popover修改样式不生效的解决)
- shell监控docker各种状态(如何监控docker容器运行状态 shell 脚本)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9