2009-04-18 18 views
11

Tôi có một cột TEXT trong một DB MySQL. Ứng dụng này giống như một blog và col chứa nội dung của "bài đăng". Tôi sẽ thực hiện rất nhiều tìm kiếm boolean phức tạp trên cột này.Độ dài chỉ mục tốt cho cột văn bản MySQL là gì?

Tài liệu MySQL cho biết bạn cần đặt độ dài chỉ mục cho cột TEXT với độ dài tối đa là 767 byte cho bảng InnoDB.

Tôi có nên đặt độ dài tối đa không? Nó tốt hơn để làm cho nó ít hơn?

Trả lời

16

Nó phụ thuộc vào những gì bạn sẽ có trong đó.

Tôi nghi ngờ từ câu hỏi của bạn rằng bạn đang tưởng tượng rằng một chỉ mục trên một cột có thể làm những việc không thể. Chỉ mục thông thường không phải là chỉ mục toàn văn và không thể được sử dụng để tìm các từ hoặc bất kỳ kết quả chuỗi con nào khác ngoài tiền tố. Chỉ mục cơ sở dữ liệu được sử dụng để tìm giá trị chính xác hoặc chỉ một phạm vi giá trị - chúng không thể thực hiện đối sánh tùy ý.

Giả sử bạn sẽ sử dụng chỉ mục cho thứ gì đó có thể làm, sau đó độ dài phải là độ dài ngắn nhất cho phép bạn có đủ đặc tính mà bạn có thể tìm thấy các hàng bạn muốn mà không cần đọc quá nhiều. Bao lâu tùy thuộc vào nội dung của bảng, ví dụ nếu bảng của bạn có nhiều hàng có cùng tiền tố, chỉ mục cần dài hơn tiền tố tương tự đó để tránh đưa chúng vào cùng một mục nhập - nghĩa là tất cả chúng đều cần để được tìm kiếm.

5

Nếu bạn đang thực hiện 'các tìm kiếm boolean phức tạp', có khả năng là một chỉ mục bình thường sẽ không được sử dụng cho bạn. Tôi nghĩ bạn có thể sẽ thấy mình cần một số full-text index.

-2

Phụ thuộc vào số lượng ký tự bạn nghĩ bạn sẽ nhập vào trường đó. Điều đó đôi khi có thể khó biết trước vì vậy chỉ có bạn mới có thể phán xét.

MySQL không cho phép bạn để mặc định (không giới hạn)?

+0

Không, không. Không dành cho TEXT. – User

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