I’ve got a small search function on a page of mine.
IF LEN(@firstName) < 1 OR @firstName IS NULL
set @firstName = '%'
IF LEN(@lastName) < 1 OR @lastName IS NULL
set @lastName = '%'
IF LEN(@carrierId) < 1 OR @carrierId IS NULL
set @carrierId = '%'
IF LEN(@worksheetId) < 1 OR @worksheetId IS NULL
set @worksheetId = '%'
SELECT TOP 1000 m.[Guid], m.WorksheetID, d.FirstName, d.LastName, m.VersionNum FROM Main m
INNER JOIN utl_Driver d ON m.DriverID = d.DriverID
WHERE d.FirstName LIKE @firstName
AND d.LastName LIKE @lastName
AND d.CarrierID LIKE @carrierId
AND m.WorksheetID LIKE @worksheetId
AND m.Deleted = 0
AND d.VersionNum = (SELECT MAX(VersionNum)
FROM Main B WHERE b.WorksheetID = m.WorksheetID)
ORDER BY m.DateTimeStart DESC;
It’s lightning quick in SQL Server Management Studio, but performs oddly when the stored procedure is called by my ASP.Net application. Searching via LastName is usually quick, but FirstName or WorksheetID times out. Moreover, erasing the ‘m.Deleted = 0’ check makes all queries execute very quickly, but I obviously need that check. Any advice?
Would you please try as below: thanks for your time.