前提・実現したいこと
下記のようなデータがあります。
2000年1月1日から現在まで毎日記録されているデータです。
※年・月・日は全て INTEGER で、この3カラムが複合主キーになっています。
|年|月|日|データ|
|:--|:--:|--:|
|2021|7|1|色々な文字列|
|2021|6|30|色々な文字列|
|2021|6|29|色々な文字列|
|2021|6|28|色々な文字列||2021|7|1|色々な文字列|
|2021|6|27|色々な文字列|
このデータから、「〇〇年〇月〇日~〇〇年〇月〇日」という期間を指定して
データを高速にSELECTするにはどうすればいいでしょうか?
該当のソースコード
主キーのインデックスを生かすクエリが全く思い浮かばず、
範囲選択もソートも整数にすれば早いだろうと思って、試しに下記のようなクエリ(2010年1月7日~2015年10月4日)を書きましたが、あまりに遅すぎでした。
SELECT * FROM DATA_TABLE_NAME BETWEEN 20100107 <= (年*10000 + 月*100 + 日) AND (年*10000 + 月*100 + 日) <= 20151004
補足情報(FW/ツールのバージョンなど)
SQL Server 2014 Express
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/07/04 19:24