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) 

enter image description here

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

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -