データベース ( MSSQL
) に、結果を出力するのに 1 分以上かかるビューがあります。これには時間がかかるため、ユーザーがライブ データまたはキャッシュ データを表示できるようにしました。これを行うには、ビューからデータを生成し、1 時間ごとにテーブルに挿入し、use_cached = 0 または 1 で構成変数を定義します。
ビューが v_foo と呼ばれ、キャッシュ テーブルが t_bar と呼ばれるとしましょう。use_cached = 0
v_foo ifから選択し、t_bar if から選択する別のビューを作成したいuse_cached = 1.
私は何かを試しました
Create view v_final as
select * from v_foo
where (select count(*) from config where id = 'use_cache' and value = 1) = 0
UNION ALL
select * from t_bar
where (select count(*) from config where id = 'use_cache' and value = 1) = 1
ただし、これにより、いずれかが行を返さなくても、union all からの両方のクエリが常に計算されます。関数を使用することもあまり良い解決策ではありません。IF 条件を使用してテーブルを返すには、一時テーブルを宣言する必要があり、データを入力するだけで 17 秒近くかかるからです。
ヘルプはありますか?