Không, sẽ không.
Về mặt lý thuyết, một chỉ mục trên (site, product, value, id)
có mọi thứ cần thiết để tạo chỉ mục trên bất kỳ tập hợp con nào trong số các trường này (bao gồm các chỉ số trên (product, value, id)
và (value, id)
).
Tuy nhiên, việc tạo chỉ mục từ chỉ mục phụ không được hỗ trợ.
Đầu tiên, MySQL
không hỗ trợ quét chỉ mục đầy đủ nhanh (tức là quét một chỉ mục theo thứ tự vật lý hơn là logic), do đó làm cho một đường dẫn truy cập chỉ mục đắt hơn so với bảng đọc. Đây không phải là vấn đề đối với InnoDB
, vì bản thân bảng luôn được nhóm lại.
Thứ hai, thứ tự bản ghi trong các chỉ mục này hoàn toàn khác nhau nên dù sao thì các bản ghi cũng cần được sắp xếp.
Tuy nhiên, vấn đề chính với tốc độ tạo chỉ mục trong MySQL
là nó tạo ra thứ tự trên trang web (chỉ cần chèn từng bản ghi vào một B-Tree
) thay vì sử dụng một nguồn được sắp xếp trước. Như @Daniel đã đề cập, việc tạo chỉ mục nhanh chóng giải quyết được vấn đề này. Nó có sẵn dưới dạng một plugin cho 5.1
và được cài đặt sẵn trong 5.5
.