MySQL——索引
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 一、索引的设计思想: (1)尽量量获取更有意义的数据。 (2)集群因子--索引叶子节点获取的数据大于真实数据的时候,索引没有意义。 (3)尽量使用唯一性比较好的条件进行创建索引,比如“主键”列。 (4)一旦对某一列设置了主键,则会自动对该列创建主键索引。 (5)一旦对某一列设置了主键,生成索引之后,以后用此列作为条件进行查询的时候,就有可能用索引查询。(走索引) (6)走不走索引是由优化器决定的,不在于有没有建立索引: 1、集群因子过大、可能不走索引; 2、将来结果集的条目占总数据量的30%的时候,优化器觉得走全盘扫描更好; 3、默认的order by单独使用的时候,优化器觉得全表的方式更好; 4、索引无法存放null指针,索引会失效。 (7)索引多不代表性能更好。 二、索引目的:加快速度 三、索引管理: 1、索引建立在表的字段上。 2、在where后面的列建立索引才会加快查询速度。 3、索引分类: (1)主键索引 (2)普通索引 (3)唯一索引 4、添加索引: 方法1: alter table test add index index_name(name); 方法2: create index index_name on test (name); 5、查看表的索引: show index from test ; 6、删除索引: alter table test drop index index_name; 四、联合索引 alter table test add index index_name(a,b,c); (将经常使用的查询条件列放在前面) 根据字段的前几个字符建立索引: alter table test add indxe indxe_name(name(8)); where: 走索引: a a, b a, b, c 不走索引: b c b,c a,c 五、看一条语句的执行计划 在语句前面加上explain,(frofiling更加详细) explain select name from test where name like 'old%' limit 10; 六、联合主键 primary key(name,sex) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现