回答編集履歴
1
調整
test
CHANGED
@@ -1,2 +1,48 @@
|
|
1
1
|
適切なインデックスを貼れば高速化は可能だと思います
|
2
2
|
MySQLの例としてあげているSQLは明らかにおかしいので実行できません
|
3
|
+
|
4
|
+
# テスト
|
5
|
+
```SQL
|
6
|
+
CREATE table table_a
|
7
|
+
(
|
8
|
+
ID int primary key auto_increment,
|
9
|
+
YYYYMM CHAR(6) NOT NULL,
|
10
|
+
CD1 CHAR(6) NOT NULL,
|
11
|
+
CD2 CHAR(2) NOT NULL,
|
12
|
+
CD3 CHAR(5) NOT NULL,
|
13
|
+
CD4 CHAR(2) NOT NULL,
|
14
|
+
CD5 CHAR(3) NOT NULL,
|
15
|
+
MAX1 CHAR(5) NOT NULL ,
|
16
|
+
MIN1 CHAR(5) NOT NULL,
|
17
|
+
CD6 CHAR (3) NOT NULL,
|
18
|
+
unique(YYYYMM, CD1, CD2),
|
19
|
+
index(CD3,CD4,CD5,MAX1,MIN1,CD6)
|
20
|
+
);
|
21
|
+
|
22
|
+
insert into table_a(YYYYMM,CD1,CD2,CD3,CD4,CD5,MAX1,MIN1,CD6) values
|
23
|
+
('202309','000001','01','30001','41','501','99001','90001','601'),
|
24
|
+
('202309','000001','02','30001','41','501','99002','90001','601'),
|
25
|
+
('202309','000001','03','30001','42','501','99003','90001','601'),
|
26
|
+
('202309','000002','01','30001','41','501','99003','90001','601'),
|
27
|
+
('202309','000002','02','30001','42','501','99002','90001','601');
|
28
|
+
```
|
29
|
+
explainで確認
|
30
|
+
```SQL
|
31
|
+
EXPLAIN SELECT
|
32
|
+
CD3
|
33
|
+
,CD4
|
34
|
+
,CD5
|
35
|
+
,MAX(MAX1)
|
36
|
+
,MIN(MIN1)
|
37
|
+
,COUNT(CD6)
|
38
|
+
FROM table_a
|
39
|
+
GROUP BY
|
40
|
+
CD3
|
41
|
+
,CD4
|
42
|
+
,CD5
|
43
|
+
```
|
44
|
+
※結果
|
45
|
+
|id|select_type|table|partitions|type|possible_keys|key|key_len|ref|rows|filtered|Extra|
|
46
|
+
|--:|:--|:--|--:|:--|:--|:--|--:|:--|--:|--:|:--|
|
47
|
+
|1|SIMPLE|table_a|NULL|index|CD3|CD3|92|NULL|5|100.00|Using index|
|
48
|
+
|