-
Notifications
You must be signed in to change notification settings - Fork 53
/
SQL面试题-索引和性能优化.sql
82 lines (71 loc) · 1.54 KB
/
SQL面试题-索引和性能优化.sql
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
72
73
74
75
76
77
78
79
80
81
82
-- 视频地址:https://www.bilibili.com/video/BV14L4y1M7c6
-- 问题一
-- 假如存在以下表 t1 和索引:
CREATE TABLE t1 (
id INT NOT NULL PRIMARY KEY,
i INT,
dt DATE);
CREATE INDEX idx1 ON t1(dt);
--下面的查询语句有没有性能问题?
SELECT *
FROM t1
WHERE YEAR(dt) = '2019';
-- 问题二
-- 假如存在以下表 t2 和索引:
CREATE TABLE t2 (
id INT NOT NULL PRIMARY KEY,
i INT,
dt DATE,
v VARCHAR(50));
CREATE INDEX idx2 ON t2(i, dt);
-- 下面的查询语句有没有性能问题?
SELECT *
FROM t2
WHERE i = 99
ORDER BY dt DESC
LIMIT 5;
-- 问题三
-- 为了优化下面两个查询,表 t3 中的索引有没有问题?
SELECT *
FROM t3
WHERE col1 = 99
AND col2 = 10;
SELECT *
FROM t3
WHERE col2 = 10;
-- 表 t3 的结构和索引如下:
CREATE TABLE t3 (
id INT NOT NULL PRIMARY KEY,
col1 INT,
col2 INT,
col3 VARCHAR(50));
CREATE INDEX idx3 ON t3(col1, col2);
-- 问题四
-- 假如存在以下表 t4 和索引:
CREATE TABLE t4 (
id INT NOT NULL PRIMARY KEY,
col1 INT,
col2 VARCHAR(50));
CREATE INDEX idx4 ON t4(col2);
-- 下面的查询语句有没有性能问题?
SELECT *
FROM t4
WHERE col2 LIKE '%sql%';
-- 问题五
-- 假如存在以下表 t5 和索引:
CREATE TABLE t5 (
id INT NOT NULL PRIMARY KEY,
col1 INT,
col2 INT,
col3 VARCHAR(50));
CREATE INDEX idx5 ON t5(col1, col3);
-- 下面两个查询语句,哪个性能更快?
SELECT col3, count(*)
FROM t5
WHERE col1 = 99
GROUP BY col3;
SELECT col3, count(*)
FROM t5
WHERE col1 = 99
AND col2 = 10
GROUP BY col3;