Difference between Clustered Index Scan and Index Scan in SQL Server


1.Clustered Index Scan

✅ What it is:

  • A Clustered Index Scan means SQL Server is scanning every row of the entire table,  essentially performing a "table scan" because the clustered index is the table itself. 

📌 When it happens:

  • No WHERE clause or very broad filter (low selectivity).
  • Join/filter columns aren’t indexed selectively.
  • Query needs most or all columns (covering queries).

🧠 Performance Insight:

  • Can be expensive for large tables.
  • Usually appears when SQL Server can’t seek and needs to read all data.


Example:  

Table:

CREATE TABLE dbo.Sales
(
    SaleID INT NOT NULL IDENTITY,
    SaleDate DATE NOT NULL,
    Quantity INT NOT NULL, PRIMARY KEY (SaleID)
)

Query:

SELECT * FROM dbo.Sales
WHERE  SaleDate  BETWEEN '2025-02-04' AND '2025-02-10'



2. Index Scan (Non-Clustered)

✅ What it is:

  • A Non-Clustered Index Scan scans all rows in a specific non-clustered index( not the full table)

📌 When it happens:

  • The query filters on a column included in a non-clustered index, but can’t use a seek.

🧠 Performance Insight:

  • Faster than scanning the whole table if only a few indexed columns are needed.
  • Less I/O than clustered scan when index is narrow and well-designed.


Comments

Popular posts from this blog

SQL Server script Error: Insufficient result space to convert uniqueidentifier value to char.

Overcoming Performance Issues with Memory Optimized tables - SQL Server 2014 CPT2