# 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.