次のクエリがあります
DECLARE @userId INT DECLARE @siteId INT SET @siteId = -1 SET @userId = 1828 a.id を alertId として選択し、 a.location_id、 a.alert_type_id、 a.event_id、 a.user_id、 a.site_id、 a.accepted_by FROM アラート AS JOIN alert_types AS ats ON a.alert_type_id = ats.id JOIN イベント AS tr ON a.event_id = tr.event_id WHERE tr.end_Time IS null AND tr.status_id = 0 AND ats.code = 'E' AND a.site_id in (SELECT * FROM dbo.udf_get_event_sitelist(@siteId, @userId))
このクエリの実行には 5 ~ 17 秒かかりますが、多くの場合、関数 dbo.udf_get_event_sitelist(@siteId, @userId) は行を返さないため、クエリはデータを検出しません。
SQL Server にユーザー定義関数を最初に実行させるにはどうすればよいですか。クエリをストアド プロシージャに書き直して、最初にサブセレクトを実行できることを感謝しますが、可能であれば単一の SQL ステートメントで実行したいと考えています。