Scenario: User search by email taking too long
Environment: SQL Server, User management system
SELECT user_id, full_name, email, phone, last_login
FROM Users
WHERE email = 'customer@example.com';- Execution Time: 2.8 seconds
- Rows Scanned: 2,500,000 (full table scan)
- Logical Reads: 35,000 pages
- No index on
emailcolumn - Full table scan on 2.5M user records
- Happens frequently (login/registration operations)
Table Scan on Users (cost=3500.00, rows=2,500,000)
Filter: email = 'customer@example.com'
CREATE UNIQUE INDEX idx_users_email
ON Users(email);Why UNIQUE?
- Email should be unique per user
- Faster lookups
- Enforces business rule
- Execution Time: 0.003 seconds ⚡
- Rows Scanned: 1 (index seek)
- Logical Reads: 3 pages
| Metric | Before | After | Improvement |
|---|---|---|---|
| Execution Time | 2.8s | 0.003s | 99.9% ↓ |
| Logical Reads | 35K | 3 | 99.99% ↓ |
Always index columns used in:
- WHERE clauses (especially with =)
- JOIN conditions
- ORDER BY clauses
- Unique constraints (email, username, SSN)
Optimized by: Rika Afriyani
Date: December 2024