質問するログイン新規登録

回答編集履歴

4

修正

2017/12/15 08:14

投稿

sazi
sazi

スコア25430

answer CHANGED
File without changes

3

修正

2017/12/15 08:14

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -24,6 +24,6 @@
24
24
  from テーブル t1
25
25
  inner join (SELECT DATE_FORMAT(create_time,"%Y-%m") AS ym, ...) t2
26
26
  on t1.xxx=t2.XXX
27
- where t2.create_time < cast("2017-11" as date)
27
+ where t2.create_time < cast("2017-11" as DATETIME)
28
28
  group by t2.ym
29
29
  ```

2

修正

2017/12/15 06:07

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -18,7 +18,7 @@
18
18
  where t2.ym < "2017-11"
19
19
  group by t2.ym
20
20
  ```
21
- 以下のように、編集前の情報と比較する方がcreate_time をインデックスに含めるなどすれば高速に動作します。
21
+ 以下のように、編集前の情報と比較する方がcreate_time をインデックスに含めるなどすれば高速に動作しますし、暗黙の型変換など入る余地もないですね
22
22
  ```SQL
23
23
  select t2.ym
24
24
  from テーブル t1

1

追記

2017/12/15 06:06

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -5,4 +5,25 @@
5
5
  項目の名前が日付を意味したものであったり、格納される書式が日付であったとしても、
6
6
  それで勝手に変換されることはありません。
7
7
 
8
- 今回の場合は単に文字列として比較されるのですから、項目に格納される値の書式が統一されている前提であれば問題はありませんね。
8
+ 今回の場合は単に文字列として比較されるのですから、項目に格納される値の書式が統一されている前提であれば問題はありませんね。
9
+
10
+ 追記
11
+ ---
12
+ yambejpさんへのコメントによると、全体では以下のようなものだと思います。
13
+ ```SQL
14
+ select t2.ym
15
+ from テーブル t1
16
+ inner join (SELECT DATE_FORMAT(create_time,"%Y-%m") AS ym, ...) t2
17
+ on t1.xxx=t2.XXX
18
+ where t2.ym < "2017-11"
19
+ group by t2.ym
20
+ ```
21
+ 以下のように、編集前の情報と比較する方がcreate_time をインデックスに含めるなどすれば高速に動作します。
22
+ ```SQL
23
+ select t2.ym
24
+ from テーブル t1
25
+ inner join (SELECT DATE_FORMAT(create_time,"%Y-%m") AS ym, ...) t2
26
+ on t1.xxx=t2.XXX
27
+ where t2.create_time < cast("2017-11" as date)
28
+ group by t2.ym
29
+ ```