例:前日のevent_idを1000件取得する
取得するDBのカラムに対して、処理しつつ取得すると遅くなります。
ついうっかりやってしまう書き方なので、備忘録として残したいと思います。
遅いSQL
遅いSQL
SELECT
event_id
FROM
events
WHERE
DATE(event_datetime) = ADDDATE(CURRENT_DATE(), -1)
LIMIT 1000
;
実行時間:20分たっても返ってこないのであきらめました。
加工しない場合と比べると段違いの速度差です。。
早いSQL
SELECT
event_id
FROM
events
WHERE
event_datetime
BETWEEN
ADDDATE(CURRENT_DATE(), -1)
AND
CURRENT_DATE() - INTERVAL 0.001 SECOND_MICROSECOND
LIMIT 1000
;
実行時間:約 0.012秒
参考:http://www.geocities.jp/mickindex/database/db_optimize.html#LocalLink-index
参考のリンク先、消えてました・・・。