この種の質問は時々聞かれます。提供されたクエリは機能しますが、パフォーマンスに影響します。
私は方法を試しましたJOIN
:
SELECT *
FROM nbk_tabl
INNER JOIN (
SELECT ITEM_NO, MAX(REF_DATE) as LDATE
FROM nbk_tabl
GROUP BY ITEM_NO) nbk2
ON nbk_tabl.REF_DATE = nbk2.LDATE
AND nbk_tabl.ITEM_NO = nbk2.ITEM_NO
そしてタプル1(ずっと遅い):
SELECT *
FROM nbk_tabl
WHERE REF_DATE IN (
SELECT MAX(REF_DATE)
FROM nbk_tabl
GROUP BY ITEM_NO
)
これを行う他のパフォーマンスに優しい方法はありますか?
編集:明確にするために、これを数千行のテーブルに適用しています。