Adicionar Mais Dados e Analisar a Ordenação
Vamos inserir mais dados para tornar a análise do plano de consulta mais significativa. Insira os seguintes dados na tabela employees:
INSERT INTO employees (first_name, last_name, email, department) VALUES
('Alice', 'Johnson', 'alice.johnson@example.com', 'HR'),
('Bob', 'Williams', 'bob.williams@example.com', 'Finance'),
('Charlie', 'Brown', 'charlie.brown@example.com', 'IT'),
('David', 'Miller', 'david.miller@example.com', 'Sales'),
('Eve', 'Wilson', 'eve.wilson@example.com', 'Marketing'),
('John', 'Taylor', 'john.taylor@example.com', 'Engineering'),
('Jane', 'Anderson', 'jane.anderson@example.com', 'HR'),
('Robert', 'Thomas', 'robert.thomas@example.com', 'Finance'),
('Emily', 'Jackson', 'emily.jackson@example.com', 'IT'),
('Michael', 'White', 'michael.white@example.com', 'Sales');
Agora, vamos analisar uma consulta mais complexa que envolve ordenação. Suponha que você queira encontrar todos os funcionários do departamento de 'Vendas' e ordená-los por sobrenome. Você pode usar a seguinte consulta:
SELECT * FROM employees WHERE department = 'Sales' ORDER BY last_name;
Analise o plano de consulta:
EXPLAIN QUERY PLAN SELECT * FROM employees WHERE department = 'Sales' ORDER BY last_name;
A saída pode ser semelhante a esta:
QUERY PLAN
`--SCAN employees USING INDEX idx_lastname
Neste caso, o SQLite está realizando uma varredura completa da tabela e, em seguida, ordenando os resultados.
Vamos criar um índice na coluna department:
CREATE INDEX idx_department ON employees (department);
Agora, analise o plano de consulta novamente:
EXPLAIN QUERY PLAN SELECT * FROM employees WHERE department = 'Sales' ORDER BY last_name;
A saída pode mudar para:
QUERY PLAN
|--SEARCH employees USING INDEX idx_department (department=?)
`--USE TEMP B-TREE FOR ORDER BY
Agora, o SQLite está usando o índice idx_department para encontrar os funcionários no departamento de 'Vendas', mas ainda precisa ordenar os resultados.