私は注文日を含むテーブルオーダーを持っています。SQL:効率的に最後のレコードを取得
WarehouseId | OrderId | ItemId | OrderDate
-------------------------------------------
1 | 1 | 1 | 2016-08-01
1 | 2 | 2 | 2016-08-02
1 | 3 | 5 | 2016-08-10
2 | 1 | 1 | 2016-08-05
3 | 1 | 6 | 2016-08-06
(テーブルを簡略化し、のみ必要なフィールドを示している)
効率的に特定の倉庫の最後の順序を選択するには?私は現在、午前の操作を行います。私は、ソート実行して、特定の倉庫のために百万円(またはそれ以上)の注文を持っていると、それはあまりにも遅くなる最初のレコードを選択したときに
SELECT TOP 1 * FROM tblOrder WHERE WarehouseId = 1 ORDER BY OrderDate DESC
私の関心は、ある(と思います?)。
最後の注文レコードを選択する効率的な方法はありますか?
おかげ
ネクタイがあれば、どのような結果になるでしょうか? (最後の日付が同じ2行) – jarlh
あなたのアプローチはあまり高価ではないので、テーブルにインデックス(WarehouseID、OrderDate)がある場合は正常に動作するはずです。 –
多くの場合、orderdateフィールドにインデックスを設定することを検討してください。これにより処理速度が向上します(ただし、このテーブルに対する他のクエリに影響を与える可能性があることに注意してください。 DBA!)。それ以外の場合は、上記のコメント者のように同じ日付を心配している場合を除き、クエリは問題ありません。 – ADyson