CREATE INDEX speeds lookups. SQLite still returns the same rows.
Goal
Index city, then select Nairobi.
DROP TABLE IF EXISTS sales;
CREATE TABLE sales (
city TEXT,
units INTEGER,
shillings INTEGER
);
INSERT INTO sales VALUES
('Nairobi', 12, 480),
('Mombasa', 8, 320),
('Kisumu', 5, 200);
CREATE INDEX IF NOT EXISTS idx_sales_city ON sales(city);
SELECT city, units FROM sales WHERE city = 'Nairobi';DROP TABLE IF EXISTS sales;
CREATE TABLE sales (
city TEXT,
units INTEGER,
shillings INTEGER
);
INSERT INTO sales VALUES
('Nairobi', 12, 480),
('Mombasa', 8, 320),
('Kisumu', 5, 200);
CREATE INDEX IF NOT EXISTS idx_sales_units ON sales(units);
SELECT city FROM sales WHERE units >= 8;DROP TABLE IF EXISTS sales;
CREATE TABLE sales (
city TEXT,
units INTEGER,
shillings INTEGER
);
INSERT INTO sales VALUES
('Nairobi', 12, 480),
('Mombasa', 8, 320),
('Kisumu', 5, 200);
EXPLAIN QUERY PLAN SELECT * FROM sales WHERE city = 'Kisumu';DROP TABLE IF EXISTS sales;
CREATE TABLE sales (
city TEXT,
units INTEGER,
shillings INTEGER
);
INSERT INTO sales VALUES
('Nairobi', 12, 480),
('Mombasa', 8, 320),
('Kisumu', 5, 200);
CREATE INDEX IF NOT EXISTS idx_sales_city ON sales(city);
SELECT COUNT(*) AS n FROM sales;