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