2010-08-24 27 views
11

Tôi đã muốn tạo một cơ sở dữ liệu lưu ý cá nhân, để lưu trữ các ghi chú trong HTML hoặc văn bản khá dài. Sự khác biệt giữa các trường VARCHARTEXT là gì, cái nào sẽ hiệu quả hơn để sử dụng?MySQL: Loại dữ liệu hiệu quả nhất để lưu trữ ghi chú dài?

Tôi nghĩ rằng tối đa là VARCHAR tối đa là 65535 ký tự, tôi không thể bao quanh đầu nếu tôi sẽ chứa bất kỳ thứ gì lớn hơn thế. Tôi tự hỏi nếu một loại dữ liệu nhất định có thể được tự động nén, mặc dù tôi không nghĩ rằng đó là đơn giản (vì nó sẽ mất quá nhiều thời gian CPU trong thực tế sử dụng).

Trả lời

10

Nếu bạn không chắc chắn nếu văn bản sẽ luôn là ngắn hơn 65535 ký tự sau đó không có nguy cơ đến sử dụng varchar. Tôi nghĩ rằng bạn chắc chắn nên sử dụng mediumtext hoặc thậm chí longtext loại nhưng để tăng hiệu suất đặt chúng vào bảng riêng biệt. Ví dụ: tạo bảng Notes sẽ chứa id ghi chú, tiêu đề, ngày tạo và người dùng tạo nó và cũng có thể là NotesText bảng sẽ được liên kết với Notes nhưng sẽ chỉ chứa id ghi chú và cột văn bản của bạn. Điều đó sẽ ngăn chặn từ querieng trên cột loại văn bản và lấy nó từ cơ sở dữ liệu khi không thực sự cần thiết.

+0

Tôi thấy câu trả lời phù hợp nhất, tôi khá muốn đặt nó vào một bảng khác chỉ để thực hành hiệu quả, Cảm ơn rất nhiều. – John

+0

Cảm ơn bạn đã chấp nhận;) Chúc bạn may mắn với dự án của mình! –

+0

Đây là WRONG. Văn bản trong Mysql được giới hạn trong cùng 65535 ký tự. – BarsMonster

2

AFAIR TEXT được giới hạn 65k ký tự, MEDIUMTEXT là 16 triệu, và LONGTEXT là 4GB max :-)

+1

Và không có gì giới hạn bạn khỏi việc nén và giải nén dữ liệu (ví dụ 4, thông qua gzip) trước khi lưu trữ. Trong trường hợp này, bạn sẽ phải sử dụng các loại BLOB. – BarsMonster

+0

Def. sẽ suy nghĩ về việc này, nhưng nó sẽ gây phiền toái khi không thể nhìn thấy văn bản và sử dụng chúng trong các truy vấn và không biết gì, tôi chắc chắn sẽ nén một tập tin 4MB + mặc dù, Cảm ơn! – John

2

Độ dài tối đa VARCHAR không phải là 65535 byte; độ dài tối đa của hàng là số byte và độ dài tối đa của VARCHAR sẽ phụ thuộc vào những cột khác mà bạn có trong bảng. Vì lý do đó, nếu bạn có thể cần nhiều ký tự đó, bạn sẽ cần cột TEXT hoặc BLOB. Đây là những tổ chức riêng biệt trên đĩa vì vậy có xu hướng chậm hơn (không sử dụng CPU nhưng trong tổng thời gian).

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