Hello.
I'm fixing a query that results in a table scan and I'm trying to trigger the index seek that it has.
I'm having a very strange problem.
---- etc
LEFT JOIN (SELECT TransI_lgnNumber, TransI_intPackageGroupNo,
SUM(TransI_curValueEach) AS TransI_curValueEach,
SUM(TransI_curNetTotal) AS TransI_curNetTotal,
SUM(TransI_curSTaxEach) AS TransI_curSTaxEach
FROM tblTrans_Inventory
GROUP BY TransI_lgnNumber, TransI_intPackageGroupNo) I
ON I.TransI_lgnNumber = T.TransT_lgnNumber
AND I.TransI_intPackageGroupNo = T.TransT_intPackageGroupNo
CROSS JOIN tblCinema
WHERE B.BookingH_dtmDateBooked>= '2016-12-12'
AND Session_dtmRealShow BETWEEN .......... etc
B.BookingH_dtmDateBooked is DATETIME
Result:
Now when I do this:
declare @dateTo as date
set @dateTo = '20161212'
set @dateTo = CONVERT(DATE,CONVERT(NVARCHAR,@DateTo,112))
---- etc
LEFT JOIN (SELECT TransI_lgnNumber, TransI_intPackageGroupNo,
SUM(TransI_curValueEach) AS TransI_curValueEach,
SUM(TransI_curNetTotal) AS TransI_curNetTotal,
SUM(TransI_curSTaxEach) AS TransI_curSTaxEach
FROM tblTrans_Inventory
GROUP BY TransI_lgnNumber, TransI_intPackageGroupNo) I
ON I.TransI_lgnNumber = T.TransT_lgnNumber
AND I.TransI_intPackageGroupNo = T.TransT_intPackageGroupNo
CROSS JOIN tblCinema
WHERE B.BookingH_dtmDateBooked>= @dateTo
AND Session_dtmRealShow BETWEEN .......... etc
The plain changes entirely and I get a table scan and a HASH match (!!)
How is that possible?! I have tried various conversions on the @DateTo . Is there a possibility that @dateTo is treated differently than the '2016-12-12' ?
What can i try?
I can post the entire code if required btw the hash match comes from this:tblTrans_Inventory