Nếu một cột thuộc loại int, nó vẫn cần được lập chỉ mục để làm cho truy vấn chọn chạy nhanh hơn?Chỉ mục mysql trên cột của loại int
SELECT *
FROM MyTable
WHERE intCol = 100;
Nếu một cột thuộc loại int, nó vẫn cần được lập chỉ mục để làm cho truy vấn chọn chạy nhanh hơn?Chỉ mục mysql trên cột của loại int
SELECT *
FROM MyTable
WHERE intCol = 100;
Có lẽ có, trừ khi
Trong trường hợp đó, quét bảng có thể có ý nghĩa hơn, và trình tối ưu hóa có thể chọn thực hiện. Trong hầu hết các trường hợp, dù sao chỉ mục không phải là rất có hại, nhưng bạn chắc chắn nên thử nó và xem (trong phòng thí nghiệm của bạn, trên phần cứng cấp sản xuất với bộ dữ liệu giống sản xuất)
Có. Nó không quan trọng kiểu dữ liệu mà cột có. Nếu bạn không chỉ định một chỉ mục, mysql phải quét toàn bộ bảng bất cứ lúc nào bạn đang tìm kiếm một giá trị với cột đó.
Có, chỉ mục trên bất kỳ cột nào có thể làm cho truy vấn hoạt động nhanh hơn bất kể loại dữ liệu nào. Bản thân dữ liệu là những gì quan trọng - không có điểm trong việc sử dụng một chỉ mục nếu chỉ có hai giá trị hiện tại trong hệ thống.
Cũng lưu ý rằng:
+1: Thông tin thêm :) – shamittomar
"MySQL cũng chỉ cho phép một chỉ mục mỗi SELECT, và có một số lượng giới hạn không gian cho các chỉ mục "- KHÔNG ?! (Hoặc tôi chỉ hiểu lầm bạn. Bạn có muốn trích dẫn một số tài liệu nêu rõ điều này không?) – yankee
@yankee: Khi bạn xem kế hoạch GIẢI THÍCH, MySQL chỉ có thể sử dụng một chỉ mục cho mỗi câu lệnh mà EXPLAIN thấy. Truy vấn phụ sẽ là một SELECT riêng biệt, ví dụ. –
Có, toàn bộ điểm trên chỉ mục là bạn tạo chúng bằng primary key
hoặc bằng cách thêm chỉ mục thủ công. Loại cột không nói gì về tốc độ truy vấn.
Có, nó phải được lập chỉ mục. Việc chỉ mục các cột tinyint
là không hợp lý nếu chúng được sử dụng làm boolean, vì chỉ mục này sẽ không đủ chọn lọc.
Có lẽ không phải trên boolean. được thông báo. Ví dụ. Xem này: http://stackoverflow.com/questions/10524651/is-there-any-performance-gain-in-indexing-a-boolean-field – dennis