1
私の問題は、実行に時間がかかりすぎるクエリを作成したことです。SQL Serverクエリの最適化
City | Department | Employee | Attendance Date | Attendance Status
------------------------------------------------------------------------
C1 | Dept 1 | Emp 1 | 2016-01-01 | ABSENT
C1 | Dept 1 | Emp 2 | 2016-01-01 | LATE
C1 | Dept 2 | Emp 3 | 2016-01-01 | VACANCY
だから私は、同じデータが含まれており、従業員の総数(すなわち、各ステータスの割合を決定するために、後にSSRSのプロジェクトで私を提供しています)が含まれて列を追加するビューを作成したいです。
私は、部門と日付による単純な選択フィルタリングを作成する関数を作成しました。
と、この機能を使用するクエリです:
SELECT City, Department, Employee, [Attendence Date], [Attendance Status], [Get Department Employees By Date](Department, [Attendence Date]) AS TOTAL
FROM attendenceTable
これは、関数である:
CREATE FUNCTION [dbo].[Get Department Employees By Date]
(
@deptID int = null,
@date datetime = null
)
RETURNS nvarchar(max)
AS
BEGIN
declare @result int = 0;
select @result = count(*) from attendenceTable where DEPT_ID = @deptID and ATT_DATE_G = @date;
RETURN @result;
END
問題は、クエリを実行するために(私は非常に長い時間を意味する)時間がかかりすぎるということです。 最適化の提案?
?どのようにデータをフィルタリングするのですか? –
機能コードも含めてください。ありがとうございます –
データはどのくらいの頻度で変更されますか?これはピークの夜に実行できますか?データベースはMS SQLですか?インデックスはありますか? – lloyd