Nếu bạn có một bảng rất lớn, thì việc tìm kiếm các giá trị không được lập chỉ mục có thể cực kỳ chậm. Theo thuật ngữ MySQL, loại truy vấn này kết thúc là "quét bảng", là một cách nói nó phải kiểm tra từng hàng trong bảng một cách tuần tự. Đây rõ ràng không phải là cách tốt nhất để làm điều đó.
Thêm chỉ mục sẽ giúp đọc tốc độ, nhưng cái giá bạn phải trả là chậm hơn một chút ghi tốc độ. Luôn có một sự đánh đổi khi thực hiện tối ưu hóa, nhưng trong trường hợp của bạn, việc giảm thời gian đọc sẽ rất lớn trong khi việc tăng thời gian ghi sẽ không đáng kể.
Hãy nhớ rằng việc thêm một chỉ mục vào một bảng lớn có thể mất một khoảng thời gian đáng kể, vì vậy hãy kiểm tra điều này với dữ liệu sản xuất trước khi áp dụng nó vào hệ thống sản xuất của bạn. Bảng có thể sẽ bị khóa trong khoảng thời gian của ALTER TABLE
tuyên bố.
Như thường lệ, hãy sử dụng EXPLAIN
trên các truy vấn của bạn để xác định chiến lược thực thi của chúng. Trong trường hợp của bạn, nó sẽ giống như sau:
EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784