007.mysql-mysql索引精讲
mysql-mysql索引精讲
索引的选择:过滤、关联字段、重复度低
0.analyze
analyze table t 命令,可以用来重新统计索引信息
ANALYZE table gaoshuiwei
1.mysql索引类型normal,unique,full text的区别是什么?
normal:表示普通索引
unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique
full textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。
2.
-- mysql删除索引 ALTER TABLE `test`.`gaoshuiwei` DROP INDEX `rid_id`; -- mysql创建索引
ALTER TABLE `test`.`gaoshuiwei` ADD INDEX `aaa_index`(`aaa`) USING BTREE COMMENT 'aa索引';
3.查询数据
无索引下全表扫描
对于前面重复比较多的字符如何加索引--例如身份证号、手机号、邮箱等
字符翻转,加前缀索引 ---不支持范围扫描、节省索引存储空间
方法:字符串翻转 REVERSE(aaa)
update gaoshuiwei set aaa_r = REVERSE(aaa)
加前缀索引
alter table gaoshuiwei add index aaa_r_index( aaa(6));
-- 查询
EXPLAIN
select * from gaoshuiwei where aaa = reverse('循环一般在存储过程和存储函数中使用110aaa4605')
如何判断前缀前几位作为前缀索引--损失比例在5%以内可采取
select count(distinct aaa_r ) as L from gaoshuiwei 54795 select count(distinct left(aaa_r,3) ) as L1 from gaoshuiwei 500 select count(distinct left(aaa_r,4) ) as L1 from gaoshuiwei 5000 select count(distinct left(aaa_r,5) ) as L1 from gaoshuiwei 52716 select count(distinct left(aaa_r,6) ) as L1 from gaoshuiwei 54795
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下