回答編集履歴

4

修正

2017/12/15 08:14

投稿

sazi
sazi

スコア25173

test CHANGED
File without changes

3

修正

2017/12/15 08:14

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  on t1.xxx=t2.XXX
52
52
 
53
- where t2.create_time < cast("2017-11" as date)
53
+ where t2.create_time < cast("2017-11" as DATETIME)
54
54
 
55
55
  group by t2.ym
56
56
 

2

修正

2017/12/15 06:07

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  ```
40
40
 
41
- 以下のように、編集前の情報と比較する方がcreate_time をインデックスに含めるなどすれば高速に動作します。
41
+ 以下のように、編集前の情報と比較する方がcreate_time をインデックスに含めるなどすれば高速に動作しますし、暗黙の型変換など入る余地もないですね
42
42
 
43
43
  ```SQL
44
44
 

1

追記

2017/12/15 06:06

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -13,3 +13,45 @@
13
13
 
14
14
 
15
15
  今回の場合は単に文字列として比較されるのですから、項目に格納される値の書式が統一されている前提であれば問題はありませんね。
16
+
17
+
18
+
19
+ 追記
20
+
21
+ ---
22
+
23
+ yambejpさんへのコメントによると、全体では以下のようなものだと思います。
24
+
25
+ ```SQL
26
+
27
+ select t2.ym
28
+
29
+ from テーブル t1
30
+
31
+ inner join (SELECT DATE_FORMAT(create_time,"%Y-%m") AS ym, ...) t2
32
+
33
+ on t1.xxx=t2.XXX
34
+
35
+ where t2.ym < "2017-11"
36
+
37
+ group by t2.ym
38
+
39
+ ```
40
+
41
+ 以下のように、編集前の情報と比較する方がcreate_time をインデックスに含めるなどすれば高速に動作します。
42
+
43
+ ```SQL
44
+
45
+ select t2.ym
46
+
47
+ from テーブル t1
48
+
49
+ inner join (SELECT DATE_FORMAT(create_time,"%Y-%m") AS ym, ...) t2
50
+
51
+ on t1.xxx=t2.XXX
52
+
53
+ where t2.create_time < cast("2017-11" as date)
54
+
55
+ group by t2.ym
56
+
57
+ ```