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

Ý nghĩa không gian đĩa của việc đặt giá trị cột MySQL thành NULL thay vì 0 hoặc ''

Không, sử dụng NULL sẽ không chiếm ít dung lượng hơn VARCHAR trống hoặc INT đồng ruộng. Trên thực tế, nó có thể chiếm nhiều hơn không gian. Đây là lý do tại sao:

A VARCHAR được lưu trữ dưới dạng kích thước + giá trị. Số byte được sử dụng cho kích thước phụ thuộc vào dung lượng lưu trữ tối đa của VARCHAR . VARCHAR(255) yêu cầu một byte, VARCHAR(65536) yêu cầu hai byte, v.v.

Vì vậy, VARCHAR(255) cột chiếm một byte ngay cả khi bạn lưu trữ một chuỗi rỗng. Bảng sau sẽ chiếm tối thiểu một byte cho mỗi hàng (cộng với một số chi phí có thể có khác tùy thuộc vào công cụ lưu trữ).

CREATE TABLE sample (
  a VARCHAR(255) NOT NULL
);

Để lưu NULL giá trị, MySQL sử dụng một mặt nạ bit cho mỗi hàng. Có thể lưu trữ tối đa 8 cột nullable trên mỗi byte. Vì vậy, nếu bạn có một bảng như thế này:

CREATE TABLE sample (
  a VARCHAR(255) NULL
);

Sẽ chiếm tối thiểu hai byte mỗi hàng. Lưu trữ NULL chỉ cần thiết lập bit, nó đã được bảo lưu cho dù bạn có sử dụng hay không. Byte cho VARCHAR Kích thước của vẫn được sử dụng cho mỗi hàng ngay cả khi cột được đặt thành NULL .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lời khuyên về cấu trúc hệ thống bình luận

  2. Cách lưu trữ dữ liệu JSON trong MySQL

  3. Sắp xếp tự nhiên trong MySQL

  4. Nối cột trả về Null Mysql - Php

  5. sử dụng cùng một trình kích hoạt cho các bảng khác nhau