Given
SELECT
a.Id, a.Col1, b.Col1
FROM
Table1 a
INNER JOIN
Table2 b ON a.Id = b.A_Id
WHERE
b.Col1 = 'Val1'
AND a.Col3 = 'Val3'
AND a.Col4 = 'Val4'
and non-clustered indices on Table1 and Table2
CREATE NONCLUSTERED INDEX IX_Table1 ON Table1(Id ASC, Col3 ASC, Col4 ASC)
CREATE NONCLUSTERED INDEX IX_Table2 ON Table2(Col1 ASC, A_Id ASC)
the above query does does an index scan on IX_Table1.
a.Id is the PK with clustered index and A_Id is a FK to a.Id.
Advisor proposes to have an index on Table1 (Col1, Col2).
I guess would optimizer be able to do index search (not scan) on IX_Table1, advisor would be fine.
Could somebody help figure out the details?
I see that in plan we first filter out by predicate in Table1 and Key Lookup for Id? And than Table2 is searched for Col1.
Can't it first use IX_Table1 for JOIN and than filter out by remaining Col3 and Col4 in the index?

CLUSTERED INDEXcolumn(s) are implicitly included in every index, so puttingIDthe indexIX_Table1isn't actually required here, and, in fact, the index you have won't help a seek to the right rows, as it's sorted byIDfirst, notCol1orCol3. It's like asking for all the people who's first name in "Jane" in the phone book, when the names are listed in Surname order, and then first name.