sql - Simple Inner join suggesting an Include index -
i have simple inner join query , execution plan master table has around 34k records , detail table has around 51k records. simple query suggesting add index include (containing master columns included in select). wasn't expecting reason , remedy.
declare @startdrinvdate date ='2017-06-01', @enddrinvdate date='2017-08-31' select mastertbl.drinvoiceid, mastertbl.drinvoiceno, mastertbl.distributorinvno, preparedby, detailtbl.batchno, detailtbl.discount, detailtbl.tradeprice, detailtbl.issuedunits, detailtbl.freeunits scmdrinvoices mastertbl inner join scmdrinvoicedetails detailtbl on mastertbl.drinvoiceid = detailtbl.drinvoiceid (mastertbl.drinvdate between @startdrinvdate , @enddrinvdate) my real curiosity why suggesting index - not see behavior larger tables
for query:
select m.drinvoiceid, m.drinvoiceno, m.distributorinvno, preparedby, d.batchno, d.discount, d.tradeprice, d.issuedunits, d.freeunits scmdrinvoices m inner join scmdrinvoicedetails d on m.drinvoiceid = d.drinvoiceid m.drinvdate between @startdrinvdate , @enddrinvdate; i expect basic indexes be: scmdrinvoices(drinvdate, drinvoiceid) , scmdrinvoicedetails(drinvoiceid). index allow query engine identify rows match where in master table , corresponding values in scmdrinvoicedetails.
the rest of columns included in either index indexes cover query. "cover" means columns in index, query plan not need refer original data pages.
the above strategy sql server suggesting.

Comments
Post a Comment