# Access Operators: Index Scan
> [!Note]
> The Index Scan Operator reads every page of a specific index to satisfy a query when an index seek is unavailable or inefficient, leveraging the narrower footprint of the index structure but incurring greater I/O than a seek.
An **Index Scan Operator** traverses all leaf-level pages of a chosen index—whether clustered or nonclustered—to locate rows that meet the query’s predicates. Unlike a [[Index Seek Operator]], which navigates the B-tree directly to qualifying keys, an index scan reads sequentially through the index structure, avoiding a full table scan and benefiting from the smaller size of the index pages. This sequential access pattern still demands significant **I/O** when the index covers a large portion of the table, yet it can outperform a table scan by restricting reads to the narrower index pages.
When the optimizer predicts that the selectivity of the filter is too low to justify a seek, or if the query requires columns not included in any index, it may choose an index scan followed by a **Key Lookup** to fetch missing data. While this two-step approach balances coverage and performance, excessive lookups amplify I/O overhead. Designing [[Covering Index]] that include all necessary columns can eliminate lookups and improve the efficiency of index scans.
> [!Tip]
> Regularly **update statistics** and consider [[Filtered Index]] to reduce the number of pages an index scan must read, narrowing its scope to the most relevant subset of data.
---
## 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.