Là một blob hiệu quả hơn một varchar cho dữ liệu có thể có kích thước BẤT K ??


9

Khi thiết lập cơ sở dữ liệu tôi muốn sử dụng loại dữ liệu hiệu quả nhất cho dữ liệu có khả năng khá dài. Hiện tại dự án của tôi là lưu trữ các tiêu đề bài hát và suy nghĩ liên quan đến bài hát đó. Một số tiêu đề có thể là 5 ký tự hoặc dài hơn 100 ký tự và suy nghĩ có thể chạy khá lâu.

Có hiệu quả hơn khi sử dụng một varchar được đặt thành 8000 hoặc sử dụng blob? Là sử dụng một blob giống như một varchar, trong đó có một kích thước thiết lập nó được phân bổ bất kể nó giữ gì? hoặc nó chỉ là một con trỏ và nó không thực sự sử dụng nhiều không gian trên bàn? Có một kích thước thiết lập nhất định của một blob trong KB hoặc nó có thể mở rộng không?

Câu trả lời:


12

Tôi sẽ đề nghị sử dụng văn bản trên BLOB.

Sự khác biệt chính

  • Văn bản và BLOB được lưu trữ ngoài bảng với bảng chỉ có một con trỏ đến vị trí lưu trữ thực tế.

  • VARCHAR được lưu trữ nội tuyến với bảng.

Hướng dẫn chính

  1. Các tin nhắn định dạng văn bản hầu như luôn được lưu trữ dưới dạng văn bản (chúng cuối cùng dài tùy ý)

  2. Các thuộc tính chuỗi nên được lưu trữ dưới dạng VARCHAR (tên người dùng đích, chủ đề, v.v ...).


Để chọn thời điểm sử dụng VARCHAR và khi nào sử dụng TEXT đã được thảo luận rộng rãi về tràn tràn Stack trong các luồng này:

  1. MySQL: VARCHAR lớn so với văn bản?

  2. MySQL varchar (2000) vs văn bản?

Ngoài ra còn có một chủ đề so sánh hiệu suất cho điều này trên diễn đàn MySQL.


Cảm ơn bạn cho những liên kết. Họ đã trả lời một số câu hỏi mà tôi có, và cuối cùng tôi đã sử dụng một văn bản. Đó không phải là chính xác những gì tôi đang tìm kiếm về không gian vật lý mà nó chiếm trên máy chủ, nhưng tôi đoán chừng nào đó chỉ là một dự án nhỏ thì không thành vấn đề. Sau này nếu tôi bắt đầu thực hiện các dự án lớn hơn, tôi sẽ cần phải tìm hiểu mặc dù.
BillyNair

0

Tôi nghĩ bạn chỉ nên sử dụng blob nếu bạn có kiểu dữ liệu phức tạp được tuần tự hóa, đó là nếu bạn muốn lưu trữ trong một bảng duy nhất một lớp phức tạp. Nếu bạn chỉ muốn lưu trữ một Chuỗi (hoặc một cái gì đó tương đương) thì không sử dụng blob.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.