2011-08-05 22 views
6

Tôi có một tập dữ liệu khổng lồ. Cấu trúc trông giống như sau:Chỉ số trường nhiều trong MySQL là một lựa chọn tốt?

K_Field1, K_Field2, K_Field3, K_Field4, D_Field5, D_Field6, D_Field7, D_field8 

Vấn đề là chỉ có trường 4 đầu tiên (K_Field1,K_Field2,K_Field3,K_Field4) cùng nhau xác định một hàng duy nhất. Tôi đã tạo một bảng, sử dụng các trường này làm trường của nó.

Giả sử tôi có 1 triệu hàng trong bảng bằng cấu trúc đó. Nếu tôi nhập một bản ghi mới, tôi phải quyết định nếu nó đã có trong cơ sở dữ liệu. Nếu có, thì tôi phải cập nhật nó, nếu không, thì tôi cần phải chèn một hàng mới.

Để làm điều đó, tôi cần phải đặt chỉ mục nhiều trường trên 4 cột đầu tiên - tức là - tôi sợ - không phải giải pháp tốt nhất. Có cấu trúc cơ sở dữ liệu tốt hơn để lưu trữ và tìm kiếm trong dữ liệu đó hay tôi phải sống với chỉ mục bốn trường?

Tôi đang sử dụng MySQL

+2

Tại sao bạn nghĩ ý tưởng xấu là có chỉ mục nhiều cột? nó hoàn toàn lành mạnh và là giải pháp duy nhất của bạn. – nobody

+0

Tôi đã hy vọng rằng tôi có thể tách dữ liệu bằng cách nào đó trong nhiều bảng, làm cho cấu trúc hiệu quả hơn, nhưng có vẻ như tôi đã sai. Cảm ơn bình luận của bạn! – mimrock

Trả lời

5

Không có gì sai với việc tạo ra một chỉ số trên 4 cột đầu tiên là, trên thực tế, bạn nên:

create unique index mytable_key on mytable(K_Field1,K_Field2,K_Field3,K_Field4); 

bởi vì đó là thực tế của tình hình của bạn.

Đây cũng là giải pháp "chính xác".

Các vấn đề liên quan