QA
Senior LevelSQL & MySQL

How do Functional (Expression-Based) Indexes work in MySQL 8.0?

❓ Interview Prompt: Explain Functional Indexes in MySQL 8.0, indexing computed expressions (`LOWER(email)`, `YEAR(created_at)`), and SARGable optimizations.

Wrapping indexed columns inside functions normally breaks index usage (non-SARGable). MySQL 8.0 solves this using Functional Indexes:

Mechanics:

•
Constructs a B-Tree index directly on the result of an expression rather than raw column values.
•
Example: 'CREATE INDEX idx_lower_email ON users ((LOWER(email)));' satisfies 'WHERE LOWER(email) = 'user@example.com'' using a fast B-Tree index seek!

Code Implementation Example

sql
-- Creating a Functional Index on LOWER(email)
CREATE INDEX idx_users_lower_email ON users ((LOWER(email)));

-- Query uses Functional B-Tree Index!
EXPLAIN SELECT id, email
FROM users
WHERE LOWER(email) = 'admin@company.com';
💡Indexing expression results with a MySQL 8 Functional Index.
🎯 Interview Key Takeaway

Use Functional Indexes to accelerate queries filtering on transformed or lowercased expressions.

#MySQL 8#Functional Index#Expression Indexing#Performance#Senior
Back to all SQL & MySQL Questions→

More SQL & MySQL Interview Questions

Beginner LevelSQL & MySQL

How do B-Tree Indexes work in SQL/MySQL and how do you optimize slow queries using EXPLAIN?

Beginner LevelSQL & MySQL

How do SELECT, WHERE, ORDER BY, and LIMIT clauses filter relational datasets?

Beginner LevelSQL & MySQL

What are INNER JOIN, LEFT JOIN, RIGHT JOIN, and FULL OUTER JOIN?