私は、私が取り組んでいるアプリケーションで約90のクエリから同じ3行のサブクエリを排除するために "ビュー"を作成したいと思います。ストアドプロシージャを「動的」ビューとして使用するか?
問題は、サブクエリに変数に基づく条件が含まれていることです。
SELECT * FROM items WHERE id NOT IN (
SELECT item_id FROM excluded_items WHERE user_id = 123
);
可変でない場合、私は単純にビューを作成して終了できます。
私はこの場合に何をすべきかわかりません。それはこのような何かを呼び出すことができるように、私は目的のレコードセットを返すストアドプロシージャを作成するように誘惑していますビューの背後に同じ考え方を採用:
SELECT * FROM user_items(123);
今、私はこのアイテムを更新するための単一の場所を持っています除外およびその他の条件がありますが、そのSPの結果を他のテーブルと結合したい場合、どのようにインデックスが影響を受けるかはわかりません。
だから、この良い/悪い練習ですか?それを行う別の方法がありますか、それを吸い込み、このサブクエリを複製し続ける必要がありますか?
感謝のエリヤ。私は実際にこのページをリフレッシュしている間にクエリを分析していました:-)これまでのSPは遅いですが、違いはごくわずかです。私は、私が考慮していないパフォーマンスを除いて、何か問題があるかどうかを知ることに本当に興味があると思います。これまでのところ、コンセンサスはあなたの答えに感謝します。 –