次のうちどれが実装するのがベストか、その理由は不思議です。SQL: "BETWEEN"と "current_date - number"の差異
select * from table1 where request_time between '01/18/2012' and '02/17/2012'
と
select * from table1 where request_time > current_date - 30
次のうちどれが実装するのがベストか、その理由は不思議です。SQL: "BETWEEN"と "current_date - number"の差異
select * from table1 where request_time between '01/18/2012' and '02/17/2012'
と
select * from table1 where request_time > current_date - 30
間の包括的な範囲は、あなたが2と10の間でのIDのようなクエリを発行したときに2と10の値はまた、あなたがこれらの値を排除したいfetched.Ifになります。すなわちあり使用>と<。
インデックスが適用されている場合は、日付の列>と<の間にインデックスを使用することもできます。
私は私のデータベースに私の日付テーブルの一部を介して2つのクエリを実行し、ANALYZE EXPLAIN使用して私は、これらの結果が見つかりました:
explain analyze
select * from capone.dim_date where date between '01/18/2012' and '02/17/2012'
は合計ランタイム:22.716ミリ秒
explain analyze
select * from capone.dim_date where date > current_date - 30
合計ランタイム:65.044 ms
したがって、第1のオプションがより最適であるように見えます。もちろんこれは私のDBMSに偏っていますが、これは私が得た結果です。
テーブルの日付は1900年から2099年までです。そのテーブルはかなり大きく、ちょっとした小さなテーブルではありません。
日付がハードコーディングされていないため、ドア#2が優先されます。D – bernie
日付をハードコードするのではなく、変数を使用します。私はPythonで作業し、そこにdatetime変数を使用します。それを言って、ドア#1が優先されますか? – Sri
私は過度にリテラルになっていて、本当の問題を避けていました。私は異なる状況で両方を使用します。私は2つの間で知覚できるパフォーマンスの違いは見ていません。 – bernie