回答編集履歴

1

調整

2023/09/12 07:21

投稿

yambejp
yambejp

スコア115034

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
+