Digamos que eu tenha uma mesa:
CREATE TABLE transactions (
id NUMERIC(20, 0) PRIMARY_KEY,
account_id VARCHAR(512),
...
transaction_date TIMESTAMP
);
Assim, com o SQL Server, um índice:
CREATE NONCLUSTERED INDEX my_index ON transactions (account_id, transaction_date, id);
e uma consulta:
SELECT id FROM transactions
WHERE account_id = '123'
AND transaction_date > '2023-01-01'
realiza uma busca de índice, ou seja, a consulta é atendida a partir do índice, não fazendo referência à tabela, pois todos os dados necessários estão presentes na tabela. Se meu índice fosse:
CREATE NONCLUSTERED INDEX my_index ON transactions (account_id, transaction_date);
a consulta iria para a tabela para atender a consulta (Index Scan). Qual dos seguintes bancos de dados:
- Oráculo
- MySQL
- PostgreSQL
apoiar o comportamento acima?
Isso está disponível na maioria dos principais fornecedores de banco de dados: