So sánh giữa char và varchar
Hôm nay bị DBA reject câu query vì sử dụng kiểu dữ liệu không hợp lý. Cô ta nói nên sử dụng char thay vì varchar trong trường hợp dữ liệu có 2 ký tự, và nó luôn được fill đầy đủ. Cô DBA nói mày sử dụng varchar cho trường hợp này không tốt cho performance làm mình ngớ người ra, phải google để ...
Hôm nay bị DBA reject câu query vì sử dụng kiểu dữ liệu không hợp lý. Cô ta nói nên sử dụng char thay vì varchar trong trường hợp dữ liệu có 2 ký tự, và nó luôn được fill đầy đủ.
Cô DBA nói mày sử dụng varchar cho trường hợp này không tốt cho performance làm mình ngớ người ra, phải google để tìm hiểu lý do tại sao
Sau một hồi lướt vài bài chia sẻ, mình hiểu ra là là kiểu dữ liệu có độ dài thay đổi cần nhiều bộ nhớ hơn và tốn thời gian hơn để xử lý.
Mỗi dòng dữ liệu sẽ phải chứa thêm hai byte để giữ độ dài vì độ dài của [N] VARCHAR có thể khác nhau ở mỗi hàng. Ngoài ra, mỗi hàng có các cột có chiều dài thay đổi có thêm 2 byte chi phí.
Ngoài ra, SQL Server phải sử dụng một số thời gian xử lý để tính toán mỗi cột [N] VARCHAR dài bao nhiêu trong hàng.
Mặt khác, với các kiểu dữ liệu có độ dài cố định, độ dài và vị trí bắt đầu của mỗi cột là không đổi và không có chi phí phụ.
Ví dụ như trong trường hợp chúng ta sử dụng VARCHAR (1), đó thực sự là sự lãng phí vì có ít nhất hai byte chi phí cho nó, cộng với dữ liệu (có thể lên tới 5 byte). Nếu bạn sử dụng CHAR (1) thì bạn luôn chỉ có một byte.
Tuy nhiên, char nó có những điều bất tiện riêng của nó như:
1) Không gian trống nếu dữ liệu không có kích thước chính xác.
2) Chúng ta phải cắt bỏ những khoảng trắng trong dữ liệu trả về nếu chúng ta không dùng hết chiều dài được khai báo.
Tham khảo tại đây