나는 다음과 같은 쿼리가 :느린 실행중인 SQL Server 쿼리
DECLARE @CompanyId bigint
DECLARE @SearchText nvarchar(4000)
SET @CompanyId=160
SET @SearchText='%02863%'
SELECT j.Id FROM Job (NOLOCK) j WHERE (j.Deleted = 0 AND j.CompanyId = @CompanyId)
AND (j.Name LIKE @SearchText OR j.DisplayId LIKE @SearchText OR j.ClaimNumber LIKE @SearchText)
UNION SELECT j.Id FROM Job (NOLOCK) j INNER JOIN Address (NOLOCK) a ON a.Id = j.AddressId
WHERE j.Deleted = 0 AND j.CompanyId = @CompanyId
AND a.SearchAddress LIKE @SearchText
UNION SELECT j.Id FROM Job (NOLOCK) j INNER JOIN Contact (NOLOCK) c ON c.Id = j.CustomerId
WHERE j.Deleted = 0 AND j.CompanyId = @CompanyId
AND c.SearchName LIKE @SearchText
실행 위쪽으로 10 초의 때때로하고있다.
DB가 꽤 작아서 오래 걸릴 것이라고 생각하지 않습니다.이 쿼리를 올바르게 구성했는지 또는 변경해야하는지 궁금합니다.
내가 읽은 바로는 전체 텍스트 검색을 구현하면 직접적인 비교이기 때문에 많은 도움이된다고 생각하지 않습니까?
또한이 쿼리에서 companyId = @ companyId 및 deleted = 0 인 작업에 속한 주소와 연락처 만 검색하면 좋겠습니까? 또는 전체 DB에서 모든 주소와 연락처를 검색 한 다음 작업 기준에 따라 필터링합니까?
이 쿼리를 변경하면 거의 즉각적인 결과를 얻을 수 있습니다! 와우, 정말 고마워 !! – Scottie