索引
索引优劣
1、无索引:SELECT 语句效率低
2、有索引:SELECT 语句效率高,但磁盘占用较多空间,影响 INSERT、DELETE、UPDATE 语句效率
3、SELECT 操作一般占 90%,INSERT、DELETE、UPDATE 操作占 10%
索引类型
1、主键索引:PRIMARY KEY
2、唯一索引:UNIQUE
3、普通索引:INDEX
4、全文索引:FULLTEXT
事项
1、主键自动成为主键索引
2、若某列的值不重复,优先使用唯一索引,否则使用普通索引
3、全文索引适用于 MyISAM 引擎,一般不使用
4、全文搜索使用 Solr 或 ElasticSearch
创建索引
1、添加唯一索引
(1)建表时添加
(2)
CREATE UNIQUE INDEX 索引名 ON 表名 (列名);
(3)
ALTER TABLE 表名 ADD UNIQUE INDEX 索引名 (列名);
2、添加普通索引
(1)
CREATE INDEX 索引名 ON 表名 (列名);
(2)
ALTER TABLE 表名 ADD INDEX 索引名 (列名);
3、添加主键索引
(1)建表时添加
(2)
ALTER TABLE 表名 ADD PRIMARY KEY (列名);
4、创建规则
(1)频繁作为查询条件的字段,应该创建索引
(2)唯一性差的字段,即使频繁作为查询条件,不适合单独创建索引
(3)更新频繁的字段,不适合创建索引
(4)不出现在 WHERE 子句的字段,不适合创建索引
删除索引
1、删除普通索引
ALTER TABLE 表名 DROP INDEX 索引名 ON 表名;
2、删除主键索引
ALTER TABLE 表名 DROP PRIMARY KEY;
3、删除唯一索引
ALTER TABLE 表名 DROP UNIQUE INDEX 索引名 ON 表名;
修改索引:先删除索引,后添加索引
查询索引
SHOW INDEX FROM 表名;
SHOW INDEXES FROM 表名;
SHOW KEYS FROM 表名;
DESC 表名;
索引失效
1、模糊查询中,以 % 开始
2、使用 OR,因为 OR 要求两边字段都需要有索引,才生效
3、使用复合索引,不使用最左侧的字段进行查询
(1)复合索引:两个及以上的字段,联合添加一个索引
4、WHERE 子句中,包含索引列,且索引列参与运算
5、WHERE 子句中,包含索引列,且索引列使用函数
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战