Cơ sở dữ liệu 15/11/2026 6 phút

SQLite đo thật — bộ lập kế hoạch và ANALYZE: khi một bảng có nhiều index, thiếu thống kê thì SQLite đoán và chọn nhầm index chậm năm nghìn lần, chạy ANALYZE một lần là chọn đúng

Phần 5 sê-ri SQLite đo thật: khi một truy vấn có thể dùng nhiều index, bộ lập kế hoạch phải chọn một, và nó chọn theo ước lượng chi phí. Đo trên bảng hai triệu dòng trong container sqlite 3.45.3: với hai điều kiện WHERE trên tp (ít chọn lọc, 400 nghìn dòng mỗi giá trị) và khach (rất chọn lọc, 40 dòng mỗi giá trị), khi chưa có thống kê SQLite chọn nhầm index idx_tp mất 53 mili-giây; chạy ANALYZE điền bảng sqlite_stat1 với số dòng trung bình mỗi giá trị, rồi cùng truy vấn đó SQLite chọn idx_khach chỉ còn 0,010 mili-giây — nhanh hơn khoảng năm nghìn lần, không đổi một dòng SQL nào.