作業表中有100萬條記錄。以下查詢的執行時間爲30秒。查詢不夠高雅,它會返回符合條件的記錄數。請幫我優化。如何優化此查詢?
DECLARE @MaxIdValue varchar(100)
DECLARE @SerchFilter varchar(100) = 'test'
DECLARE @TotalRowCount int = (SELECT
Count(*) AS [RowCount]
FROM
[Jobs]
INNER JOIN [Sites] ON [Jobs].[SiteId] = [Sites].[Id]
INNER JOIN [JobStatusHistory] ON [Jobs].[JobStatusHistoryId] = [JobStatusHistory].[Id]
INNER JOIN [JobStatuses] ON [JobStatusHistory].[StatusId] = [JobStatuses].[Id]
INNER JOIN [JobTypes] ON [Jobs].[JobTypeId] = [JobTypes].[Id]
LEFT JOIN [Customers] ON [Jobs].[CustomerId] = [Customers].[Id]
LEFT JOIN [Priorities] ON [Jobs].[PriorityId] = [Priorities].[Id]
LEFT JOIN [TaskTypes] ON [Jobs].[TaskTypeId] = [TaskTypes].[Id]
LEFT JOIN [Areas] ON [Sites].[AreaId] = [Areas].[Id]
WHERE
(
[Sites].[Active]=1
AND
(
[Jobs].[OwnedByCompanyId]=18
OR
[Jobs].[OwnedByCompanyId] = 0)
AND
[Jobs].[Active]=1
)
AND
(
[Customers].[Name] LIKE '%'[email protected]+'%'
OR
[Sites].[Name] LIKE '%'[email protected]+'%'
OR
[Sites].[Address1] LIKE '%'[email protected]+'%'
OR
[Sites].[Postcode] LIKE '%'[email protected]+'%'
OR
[Sites].[UPRN] LIKE '%'[email protected]+'%'
OR
[Sites].[Contact] LIKE '%'[email protected]+'%'
OR
[Sites].[Telephone] LIKE '%'[email protected]+'%'
OR
[Sites].[Work] LIKE '%'[email protected]+'%'
OR
[Sites].[MobileNumber] LIKE '%'[email protected]+'%'
OR
[Areas].[Description] LIKE '%'[email protected]+'%'
OR
[Jobs].[Id] LIKE '%'[email protected]+'%'
OR
[Jobs].[OrderNumber] LIKE '%'[email protected]+'%'
OR
[Jobs].[Description_PlainText] LIKE '%'[email protected]+'%'
OR
[Jobs].[JobNumber] LIKE '%'[email protected]+'%'
OR
[JobTypes].[Description] LIKE '%'[email protected]+'%'
OR
[TaskTypes].[Description] LIKE '%'[email protected]+'%'
OR
[Priorities].[Description] LIKE '%'[email protected]+'%'
)
)
什麼數據類型的每個字段的定義?就像描述字段文本或varchar字段一樣? – 2012-08-15 11:46:45