、レポートのデータは、(許容可能である)、約2〜9秒で走るビューとして形をとっています。 1秒未満で、独自の実行にSQLクエリ速度
select *
from vw_report
where employee_id in (select id from dbo.fnc_security(@personRanAsID))
セキュリティ機能:私はまた、ビューをフィルタリングする必要があるIDのセットを返す機能を持っています。しかし、上記の2つを組み合わせると、クエリに15分以上かかります。
もともと私はそれをロックダウンするかもしれないと思ったので、ビューとセキュリティ機能が仕事のかなり多くを行う、私はセキュリティ機能にはロックを試していないてきたが、それは何の違いを作ったん両方。私は間違って行くこともどこまでとして
任意のヒントやトリック?
それは私が文の一部でに関数の結果をコピーすると、ことは注目に値することがあります
select *
from vw_report
where employee_id in (123, 456, 789)
速度が戻って2〜9秒に増加します。
私たちは、あなたが(オラクル、MySQLの、SQL ServerのはPostgreSQL、SQLiteの...)を使用して、何そのRDBMSのバージョンいるRDBMSかわからない場合はお答えすることは困難です。 SQLの実装は異なります。たとえば、クエリの効率を向上させるために使用できる機能があります。 – Benoit