2011-12-22 26 views
5

Nếu tài liệu XML được lưu trữ luôn nhỏ hơn 64 KiB (nghĩa là, AFAIK, giới hạn VARCHAR) thì ưu điểm và khuyết điểm của các loại cột VARCHAR và TEXT được sử dụng cho tác vụ này là gì?Ưu và nhược điểm của việc sử dụng VARCHAR vs TEXT để lưu trữ các tài liệu XML nhỏ trong MySQL là gì?

+2

Không tăng tốc với MySQL nhưng kiểu dữ liệu TEXT đã trở nên lỗi thời trong SQL Server để ủng hộ VARCHAR (MAX). Một số hạn chế của kiểu dữ liệu TEXT mà nó không thể được lập chỉ mục, nó được lưu trữ ngoài trang và nó không thể được tìm kiếm với một điều kiện LIKE. –

+0

Bạn có chắc chắn về "lỗi thời" @lieven không? Không có trường hợp nào phù hợp hơn VARCHAR? Trong trường hợp cụ thể của tôi, tôi sẽ thiết lập văn bản một lần và thỉnh thoảng nó (với một truy vấn riêng biệt, ít tham gia tìm kiếm một trường bằng một khóa đơn giản hơn nhiều), có lẽ không cần cập nhật cũng như không phân tích nó. – Ivan

+1

Lưu ý rằng tôi đã nói cụ thể về 'SQL Server' nhưng tôi sẽ * tưởng tượng * MySQL đi cùng một tuyến đường một ngày nào đó. Đừng làm điều này như một lời khuyên chăn, tôi tò mò về những gì cộng đồng nói về nó và hy vọng ai đó có chuyên môn sẽ kêu vang. –

Trả lời

2

Các trích đoạn sau được trích xuất từ ​​tài liệu MySQL liên quan đến string types.

"Chuỗi có độ dài thay đổi. M đại diện cho độ dài cột tối đa trong ký tự. Phạm vi của M là 0 đến 65,535. Độ dài tối đa hiệu dụng của VARCHAR phụ thuộc vào kích thước hàng tối đa (65,535 byte, được chia sẻ Ví dụ, các ký tự utf8 có thể yêu cầu tối đa ba byte cho mỗi ký tự, do đó, cột VARCHAR sử dụng bộ ký tự utf8 có thể được khai báo là tối đa 21.844 ký tự. , "Giới hạn số cột và giới hạn kích thước hàng" Bảng

Các cửa hàng MySQL Giá trị VARCHAR là tiền tố một byte hoặc hai byte cộng dữ liệu. Tiền tố chiều dài cho biết số byte trong giá trị. sử dụng một byte độ dài nếu các giá trị yêu cầu không quá 255 byte, hai byte độ dài nếu v alues ​​có thể yêu cầu nhiều hơn 255 byte. "

TEXT trích đoạn:

"Một cột TEXT với chiều dài tối đa 65.535 (216 - 1) nhân vật Độ dài tối đa hiệu quả là ít nếu giá trị chứa ký tự nhiều byte Mỗi giá trị TEXT được lưu trữ.. sử dụng tiền tố có độ dài hai byte cho biết số byte trong giá trị

Độ dài tùy chọn M có thể được cung cấp cho loại này.Nếu điều này được thực hiện, MySQL sẽ tạo cột là loại TEXT nhỏ nhất đủ lớn để giữ giá trị ký tự M dài. " Có vẻ như cả hai văn bản và varchar đều giống nhau trên bề mặt, trong đó chúng có cùng dung lượng lưu trữ cho chuỗi, nhưng sau một số nghiên cứu tiếp theo, tôi đã xem qua thread sau đây. trong việc xử lý các chỉ mục và tạo các bảng tạm thời, cả hai đều ảnh hưởng đến hiệu năng truy vấn.

Nếu bạn không có ý định thực hiện bất kỳ truy vấn nào đối với dữ liệu bạn đang lưu trữ, tôi khuyên bạn nên xem xét giải pháp NoSQL như MongoDB.

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