Home All Groups Group Topic Archive Search About

Where is Bookmark Lookup?!

Author
8 Apr 2006 8:44 PM
Leila
Hi,
In the graphical view of execution plan (in QA), a bookmark lookup was quite
easy to find. But in SSMS, it is displayed as a inner join. Although the
logic is the same, but in exec plan of complicated queries, it is much
easier to find a bookmark lookup when its icon is show rather than denoting
it by a loop join. Are there any solution to find out that if particular
index is not covering, even when the bookmark lookup is replaced with loop
join?
Thanks in advance,
Leila

Author
8 Apr 2006 10:50 PM
Erland Sommarskog
Leila (Lei***@hotpop.com) writes:
> In the graphical view of execution plan (in QA), a bookmark lookup was
> quite easy to find. But in SSMS, it is displayed as a inner join.
> Although the logic is the same, but in exec plan of complicated queries,
> it is much easier to find a bookmark lookup when its icon is show rather
> than denoting it by a loop join. Are there any solution to find out that
> if particular index is not covering, even when the bookmark lookup is
> replaced with loop join?

I guess that it's just a matter of training to read the new layout of the
query plan. After all, the information is still there.


--
Erland Sommarskog, SQL Server MVP, esq***@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
Author
8 Apr 2006 11:50 PM
Itzik Ben-Gan
In 2000 a lookup operator did not reveal exactly what it was doing, nor the
fact that it was invoked in a loop (0, 1 or more times). The 2005
representation is actually more accurate.
The nested loops operator will invoke the inner operator (representing the
lookup activity) once per each row locator found by the outer operator
(representing the access method that returns the row locators). The inner
operator representing the lookup will show up as an RID Lookup if the table
is structured as a heap, and as a Clustered Index Seek if the table is
structured as a B-Tree (clustered).
This is a more accurate representation of what's going on behind the scenes
than the 2000 representation.

I can see what you mean in terms of having a harder time to figure out the
meaning of a nested loops that drives seek operations: are these lookups or
just a plain nested loops join?

>> Are there any solution to find out that if particular index is not
>> covering, even when the bookmark lookup is replaced with loop join? <<

The only thing that I can think of is to check whether both inner and outer
parts of the join belong to the same table.

--
BG, SQL Server MVP
www.SolidQualityLearning.com
www.insidetsql.com
Anything written in this message represents my view, my own view, and
nothing but my view (WITH SCHEMABINDING), so help me my T-SQL code.


Show quote
"Leila" <Lei***@hotpop.com> wrote in message
news:OmiACX1WGHA.1352@TK2MSFTNGP05.phx.gbl...
> Hi,
> In the graphical view of execution plan (in QA), a bookmark lookup was
> quite easy to find. But in SSMS, it is displayed as a inner join. Although
> the logic is the same, but in exec plan of complicated queries, it is much
> easier to find a bookmark lookup when its icon is show rather than
> denoting it by a loop join. Are there any solution to find out that if
> particular index is not covering, even when the bookmark lookup is
> replaced with loop join?
> Thanks in advance,
> Leila
>

AddThis Social Bookmark Button