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)

  

posted @   映辉  阅读(39)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示