このクエリで
SELECT
o1.created,
SEC_TO_TIME(TIMESTAMPDIFF(second, o1.created, (SELECT MAX(created) FROM orders o2 WHERE o2.created < o1.created and o2.created >= '2012-06-01'))) tsd
FROM
orders o1
WHERE o1.created >= '2012-06-01'
ORDER BY tsd DESC LIMIT 100
注文がない重要な時期があったかどうか、そしてこの期間がどれくらいだったかを知りたいです。
説明は次のとおりです。
*************************** 1. row ***************************
id: 1
select_type: PRIMARY
table: o1
type: range
possible_keys: created
key: created
key_len: 4
ref: NULL
rows: 2649278
Extra: Using where; Using index; Using filesort
*************************** 2. row ***************************
id: 2
select_type: DEPENDENT SUBQUERY
table: o2
type: range
possible_keys: created
key: created
key_len: 4
ref: NULL
rows: 2649278
Extra: Using where; Using index
created
タイプtimestamp
です。
クエリは1時間以上実行されます。スキーマ内の何かを変更することはオプションではありません。これは1回限りのクエリですが、パフォーマンスを向上させることができるかどうかだけが気になります。