Skip to content

Commit ed2e582

Browse files
committed
readme
1 parent 5a40a9e commit ed2e582

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,12 @@ Senior Java engineer interview exams in 2019
166166
写一个熟悉的排序算法
167167

168168
<hr/>
169+
170+
* 上海品上生活电子商务有限公司
171+
172+
* [mysql怎么查看查询有没有应用索引成功(关键字explain)](readme/index-explain.md)
173+
174+
<hr/>
169175
170176
* 小牛互娱
171177

readme/index-explain.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# mysql怎么查看查询有没有应用索引成功
2+
3+
答案: 在查询sql语句左边加上关键字'explain' ,再带上空格.
4+
5+
其中possible_keys:显示可能应用在这张表中的索引
6+
7+
key: 实际使用的索引
8+
9+
explain 也称为'执行计划分析'
10+
11+
```text
12+
如:
13+
14+
explain select surname,first_name form a,b where a.id=b.id
15+
EXPLAIN列的解释:
16+
17+
table:显示这一行的数据是关于哪张表的
18+
19+
type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index和ALL
20+
21+
type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
22+
一般来说,得保证查询至少达到range级别,最好能达到ref。
23+
24+
possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
25+
26+
key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引
27+
28+
key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
29+
30+
ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
31+
32+
rows:MYSQL认为必须检查的用来返回请求数据的行数
33+
34+
Extra:关于MYSQL如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢
35+
```

0 commit comments

Comments
 (0)