# Bookmark Lookup Access Operation > [!Note] > `The optimizer leverages a non-clustered index for efficient seeking but performs a key lookup to fetch any missing columns, and then decides if that approach is more cost-effective than a full scan.` When a query predicate can be satisfied by a **non-clustered index** but additional columns are needed to complete the result set, the engine first issues an **Index Seek** to rapidly identify the matching row identifiers. It then follows up with a **Key Lookup** against the base table to retrieve the columns absent from the index. At this point the **optimizer** weighs the cumulative cost of performing repeated lookups against the alternative of scanning either the entire index or the whole table. If many rows must be fetched, a direct **Index Scan** or **Table Scan** may ultimately prove more efficient than multiple key lookups. Recognizing this trade-off is essential for crafting **covering indexes** that eliminate expensive bookmark lookups. --- ## References - Korotkevitch, D. (2022). _SQL Server advanced troubleshooting and performance tuning: Best practices and techniques_. O’Reilly Media. - Nevarez, B. (2022). _SQL Server query tuning and optimization: Optimize Microsoft SQL Server 2022 queries and applications_. Packt Publishing.