1

以下のクエリを使用して、特定の時間 (時間単位) 更新されていないレコードを取得し、経過時間で並べ替えます。

SELECT TABLE.Key, TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted, CURRENT_TIMESTAMP)
FROM TABLE WHERE TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted,
CURRENT_TIMESTAMP) <= 7 ORDER BY TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted,
CURRENT_TIMESTAMP);

ご覧のとおり、TIMESTAMPDIFF を複数回呼び出しますが、これらの呼び出しはすべて無駄な SQL 計算につながるため、あまり効率的ではありません。

一度だけ処理されるように計算を再利用する方法があるかどうか疑問に思っていましたか?

どうもありがとうございました。

フロラン

4

1 に答える 1

0
SELECT 
    t.Key, t.dif
FROM (
        SELECT key, TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted, CURRENT_TIMESTAMP) dif
        FROM TABLE
     ) t
WHERE 
    t.dif <= 7 
ORDER BY 
    t.dif
于 2012-06-24T16:51:18.360 に答える