Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Việc tách dữ liệu lớn và nhỏ có liên quan trong cột của bảng SQL có hiệu quả hơn không?

VARCHAR được lưu trữ nội tuyến với bảng. VARCHAR nhanh hơn khi kích thước hợp lý, sự cân bằng sẽ nhanh hơn tùy thuộc vào dữ liệu và phần cứng của bạn, bạn muốn đánh giá một kịch bản thế giới thực với dữ liệu của mình.

Số byte tối đa hiệu dụng có thể được lưu trữ trong VARCHAR hoặc VARBINARY cột phải tuân theo kích thước hàng tối đa là 65,535 bytes , được chia sẻ giữa tất cả các cột.

Ví dụ:VARCHAR(255) cột có thể chứa một chuỗi có độ dài tối đa là 255 ký tự. Giả sử rằng cột sử dụng bộ ký tự latin1 (một byte cho mỗi ký tự), dung lượng lưu trữ thực tế cần thiết là độ dài của chuỗi (L), cộng với một byte để ghi độ dài của chuỗi. Đối với chuỗi 'abcd' , L4 và yêu cầu lưu trữ là năm byte. Nếu cùng một cột được khai báo để sử dụng ucs2 bộ ký tự hai byte, yêu cầu lưu trữ là 10 byte:Độ dài của 'abcd' là tám byte và cột yêu cầu hai byte để lưu trữ độ dài vì độ dài tối đa lớn hơn 255 (tối đa 510 bytes ).

Để có dữ liệu lớn hơn, hãy cân nhắc sử dụng TEXT hoặc BLOB . TEXTBLOB các cột được triển khai khác nhau trong NDB công cụ lưu trữ, trong đó mỗi hàng trong một TEXT cột được tạo thành từ hai phần riêng biệt. Một trong số này có kích thước cố định (256 bytes) , và thực sự được lưu trữ trong bảng gốc. Cái kia bao gồm bất kỳ dữ liệu nào vượt quá 256 bytes , được lưu trữ trong một bảng ẩn. Các hàng trong bảng thứ hai này luôn là 2,000 bytes Dài. Điều này có nghĩa là kích thước của TEXT cột là 256 if size <= 256 (trong đó kích thước đại diện cho kích thước của hàng); nếu không, kích thước là 256 + size + (2000 – (size – 256) % 2000) .

http://dev.mysql.com/doc/refman /5.6/en/storage-requirements.html

Phụ thuộc vào mối quan hệ cơ sở dữ liệu của bạn, nếu bạn hiếm khi sử dụng các trường đó trong truy vấn. Ví dụ để biết thêm thông tin. Tạo bảng tách biệt là tùy chọn tốt (chuẩn hóa).

LƯU Ý: VARCHAR khác với CHAR . Nếu bạn tạo VARCHAR(250) và chỉ chèn 20 các ký tự trên đó thì nó sẽ chiếm 5 bytes + L khác với CHAR(250) , nó sẽ mất 250 bytes + L cho cùng một điều kiện.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thực hiện các truy vấn tham gia bằng cách sử dụng Sequelize trên Node.js

  2. Chuyển các tham số cho tập lệnh MySQL

  3. Định dạng DateTime chính xác cho Cơ sở dữ liệu MySQL là gì?

  4. Biến MySQL `max_allowed_packet` tự động đặt lại thành 1MB

  5. Cập nhật và chọn trong một truy vấn