File tree Expand file tree Collapse file tree 1 file changed +46
-6
lines changed
Expand file tree Collapse file tree 1 file changed +46
-6
lines changed Original file line number Diff line number Diff line change @@ -573,7 +573,12 @@ SELECT * FROM t WHERE id = 1;
573573
574574# #### 扫描行数
575575
576- 优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join )的时候,决定各个表的连接顺序。找到一个最优的执行方案,用最小的代价去执行语句
576+ 优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join )的时候,决定各个表的连接顺序。
577+
578+ * 根据搜索条件找出所有可能的使用的索引
579+ * 计算全表扫描的代价
580+ * 计算使用不同索引执行 SQL 的的代价
581+ * 找到一个最优的执行方案,用最小的代价去执行语句
577582
578583在数据库里面,扫描行数是影响执行代价的因素之一,扫描的行数越少意味着访问磁盘的次数越少,消耗的 CPU 资源越少,优化器还会结合是否使用临时表、是否排序等因素进行综合判断
579584
@@ -1190,13 +1195,12 @@ LIMIT <limit_params>
11901195 SELECT 列名1,列名2,... FROM 表名;
11911196 ` ` `
11921197
1193- * 去除重复查询
1194- 注意:只有值全部重复的才可以去除
1195-
1198+ * 去除重复查询:只有值全部重复的才可以去除,需要创建临时表辅助查询
1199+
11961200 ` ` ` mysql
11971201 SELECT DISTINCT 列名1,列名2,... FROM 表名;
11981202 ` ` `
1199-
1203+
12001204* 计算列的值(四则运算)
12011205
12021206 ` ` ` mysql
@@ -2012,7 +2016,7 @@ WHERE
20122016
20132017# ### 内连接
20142018
2015- 查询原理:内连接查询的是两张表有交集的部分数据
2019+ 查询原理:内连接查询的是两张表有交集的部分数据,分为驱动表和被驱动表,首先查询驱动表得到结果集,然后根据结果集中的每一条记录都分别到被驱动表中查找匹配
20162020
20172021* 显式内连接
20182022
@@ -4671,6 +4675,42 @@ CREATE INDEX idx_area ON table_name(area(7));
46714675
46724676
46734677
4678+ ****
4679+
4680+
4681+
4682+ # ### 索引合并
4683+
4684+ 使用多个索引来完成一次查询的执行方法叫做索引合并 index merge
4685+
4686+ * Intersection 索引合并:
4687+
4688+ ` ` ` sql
4689+ SELECT * FROM table_test WHERE key1 = 'a' AND key3 = 'b'; # key1 和 key3 列都是单列索引、二级索引
4690+ ` ` `
4691+
4692+ 从不同索引中扫描到的记录的 id 值取交集(相同 id),然后执行回表操作,要求从每个二级索引获取到的记录都是按照主键值排序
4693+
4694+ * Union 索引合并:
4695+
4696+ ` ` ` sql
4697+ SELECT * FROM table_test WHERE key1 = 'a' OR key3 = 'b';
4698+ ` ` `
4699+
4700+ 从不同索引中扫描到的记录的 id 值取并集,然后执行回表操作,要求从每个二级索引获取到的记录都是按照主键值排序
4701+
4702+ * Sort- Union 索引合并
4703+
4704+ ` ` ` sql
4705+ SELECT * FROM table_test WHERE key1 < 'a' OR key3 > 'b';
4706+ ` ` `
4707+
4708+ 先将从不同索引中扫描到的记录的主键值进行排序,再按照 Union 索引合并的方式进行查询
4709+
4710+
4711+
4712+
4713+
46744714
46754715
46764716***
You can’t perform that action at this time.
0 commit comments