MySQL索引不会被用到的情况汇总
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,MySQL中索引的类型一般可分为四类:普通索引:最普通的索引唯一索引:索引列的值必须唯一,但允许有空值主键索引:一种特殊的唯一索引,不允许有空值联合索引:索引列有多个字段,使用时需要满足最左前缀原则普
千家信息网最后更新 2025年01月23日MySQL索引不会被用到的情况汇总
MySQL中索引的类型
一般可分为四类:
- 普通索引:最普通的索引
- 唯一索引:索引列的值必须唯一,但允许有空值
- 主键索引:一种特殊的唯一索引,不允许有空值
- 联合索引:索引列有多个字段,使用时需要满足最左前缀原则
普通索引
这是最基本的索引,它没有任何限制。它有以下几种创建方式:
1.创建索引
代码如下:
CREATE INDEX indexName ON mytable(username(length));
如果是 CHAR,VARCHAR 类型,length 可以小于字段实际长度;如果是 BLOB 和 TEXT 类型,必须指定 length,下同。
2.修改表结构
代码如下:
ALTER mytable ADD INDEX [indexName] ON (username(length))
创建表的时候直接指定
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)));
删除索引的语法:
DROP INDEX [indexName] ON mytable;
唯一索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
CREATE UNIQUE INDEX indexName ON mytable(username(length))
修改表结构:
ALTER mytable ADD UNIQUE [indexName] ON (username(length))
创建表的时候直接指定:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:
代码如下:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );
当然也可以用 ALTER 命令。记住:一个表只能有一个主键。
联合索引
为了形象地对比单列索引和组合索引,为表添加多个字段:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL );
为了进一步榨取 MySQL 的效率,就要考虑建立组合索引。就是将 name, city, age 建到一个索引里:
代码如下:
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);
索引用不上的情况
索引不是每次都可以生效的,如果我们操作不对,那么很有可能是走全表扫描而不是走的索引,Explain 中的 possible_key、key_len 以及 key 参数都可以分析我们的 SQL 语句是否用到了索引。
以下情况将会导致索引失效
- 查询的列中使用了 != 比如 select id,name,age from student where id != 2;
- 查询的列中使用了函数操作,比如 pow(id,2) 对 id 做平方这种函数表达式,也不会用到索引
- 如果条件中有 or,即使其中有部分条件带索引也不会使用(这也是为什么尽量少用or的原因)
- 联合索引中即使满足最左前缀原则,但是第一个条件带了范围查询,那么也不会用到索引
- 存在索引列的数据类型隐形转换,则用不上索引,比如列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
- 如果 MySQL 估计使用全表扫描要比使用索引快,则不使用索引
以上都可以使用 Explain 进行测试是否用到了索引。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
索引
类型
普通
代码
条件
组合
字段
就是
时候
查询
联合
情况
特殊
内容
函数
前缀
原则
多个
数据
方式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
移动宽带是百兆怎么连接服务器
京东互联网高科技
慕课计算机网络技术期末考试
为切实做好网络安全工作
更新服务器中断
不是搞软件开发的料
2020网络安全重点
哔哩哔哩计算机网络技术第八版
数据库查出两个表中的数据
多媒体网络技术迅速发展
我的世界服务器固定管理员
网络安全系统测评
广州男士购物商城软件开发
浙江宁波hp服务器云服务器
mes系统软件开发公司
如何开发手机app软件开发
威胁网络安全的是
阿里云设置数据库密码修改
维普属于书目型数据库吗
逐鹿服务器到江苏泰州
酒店服务器华为交换机型号
魔兽世界9.0数据库app
违反计算机网络安全相关规定
数据库的设计与实现论文要写啥
明日方舟哪个服务器最多
批量删除空格内部分数据库
工控网络技术期中试卷
网络安全管理工作制度
怎么分辨电脑服务器
元神架设服务器