I have decided to start trying to learn more about performance tuning so I decided to take a look at a query that had a high count on the execution plan. When I put that query into SSMS and look at the estimated execution plan I am seeing an index seek but also with an RID Lookup. The RID lookup has a high cost. What exactly is an RID Lookup? I have heard of a bookmark lookup but not RID.
A RID Lookup is a lookup into a heap table using a Row ID. The Row ID is included in a non-clustered index in order to find the rest of a table's data in the heap table. Since a heap table is a table without a clustered index and is sorted unordered a Row ID is required for the correlation. You should really look to add a clustered index to this table. Is this an in house product or a database to a third party vendor application? I have ran into this numerous times with third party products. I have yet to come into a situation where I could not add a clustered index.
I can't add anything to what Kev and TRAD have already said. But if you're just getting started with execution plans, I can recommend a good (free) book. [Go here to download it.] And yes, it's mine. :
bookmark lookup or RID lookup showing in the Execuatuon plan when you select Columns not included on your index if table has clustered index, it is called **bookmark lookup** (or key lookup); if the table does not have clustered index, but a non-clustered index, it is called **RID lookup.** There is something exciting in SQL Server called **'Covering Indexes'** which can save you in such situation.