私は列で、次の表Orders
があります選択考慮サブセット
order_id
、timestamp
、worker_id
、costumer_id
、start_ts
、end_ts
start_ts
、end_ts
、worker_id
とcostumer_id
の任意の組み合わせに応じてデータベースを照会するための最良の方法は何ですか?
start_ts
は、私は希望を省略した場合:
SELECT *
FROM Orders
WHERE timestamp <= end_ts
AND worker_id = <worker_id>
AND costumer_id = <costumer_id>;
worker_id
とcostumer_id
が代わりに省略されている場合:
SELECT *
FROM Orders
WHERE timestamp BETWEEN start_ts AND end_ts;
これが重要なのは、列に定義されているインデックスごとです。複数のフィールドを含む索引の場合、where句のフィールドは、索引で定義されている順序と同じ順序でリストされます。これはパフォーマンスに役立ちますが、違う順序を使用するには不正な構文ではありません。 – jleach
@ jdl134679良いコメントですが、これは問題の範囲ではありませんが、実際にこのようなシナリオを扱うためのSQL機能を探しています –