2010-07-30 37 views

Trả lời

3

Sự khác biệt sẽ không đáng kể trong hầu hết các trường hợp. Tập trung nỗ lực thiết kế theo định hướng hiệu suất của bạn ở những nơi mà nó sẽ tạo ra sự khác biệt thực sự, như thành phần bảng và thiết kế chỉ mục.

Nó giúp chia nỗ lực thiết kế thành hai lớp: thiết kế logic và thiết kế vật lý.
Hầu hết các nỗ lực định hướng hiệu suất là ở giai đoạn thứ hai, thiết kế vật lý.

Trong thiết kế logic, tính linh hoạt vượt trội hơn hiệu suất. Ngoại trừ khi nó không.

+1

Tính linh hoạt hầu như không bao giờ được tăng hiệu suất! Tôi đảm bảo người dùng muốn performacne trên sự linh hoạt ngay cả khi họ nói rằng họ muốn sự linh hoạt. – HLGEM

1

nó hầu như không quan trọng, vì bạn đang sử dụng 1 byte trong cả hai trường hợp.

nhưng dài câu chuyện ngắn, varchar là biến kích thước & char là kích thước cố định. với số lượng lớn điều này có thể tạo ra sự khác biệt về không gian lưu trữ cũng như ảnh hưởng đến thời gian tính toán.

hiệu suất khôn ngoan, sử dụng char nếu dữ liệu sẽ có độ dài cố định. nếu bạn linh hoạt với độ dài khác nhau của dữ liệu thì hãy sử dụng varchar.

+3

*** KHÔNG 1 byte trong cả hai trường hợp! *** - ví dụ - MYSQL v5.0 tài liệu nói yêu cầu lưu trữ varchar cho varchar (M) yêu cầu 'L + 1 byte nếu giá trị cột yêu cầu 0 - 255 byte' (trong đó L thể hiện độ dài thực tế theo byte của Chuỗi giá trị). Vì vậy, bạn sẽ sử dụng 1 byte cho CHAR (1) và 2 byte cho VARCHAR (1). Trong trường hợp này, bạn đang sử dụng không gian lưu trữ nhiều hơn 100% cho cột này. Điều này có thể hoặc có thể không phải là một việc lớn tùy thuộc vào tình hình sử dụng. Worth chỉ ra sự khác biệt mặc dù trong trường hợp nó là thích hợp. (xem http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html) –

2

Theo như Oracle có liên quan ....

CHAR (2) sẽ luôn sử dụng hai byte/ký tự lưu trữ. VARCHAR2 (2) chỉ có thể sử dụng một. Vì vậy, trường hợp chung là sử dụng VARCHAR2 thay vì CHAR.

Trong thực tế, bạn sẽ không thấy hiệu suất khác biệt khôn ngoan cho cột một ký tự.

Vì không bao giờ có lợi ích từ CHAR, tôi luôn sử dụng VARCHAR2.

+4

VARCHAR sẽ vẫn phải lưu trữ ít nhất một byte cho độ dài của chuỗi, mặc dù vậy, bạn không bao giờ có ít hơn 1 byte. – Gabe

0

Sự hiểu biết của tôi sau khi đọc mô tả của VARCHAR và CHAR của MySQL là nếu dữ liệu của bạn luôn có cùng độ dài, thì CHAR có thể giúp bạn tiết kiệm một byte dữ liệu vì VARCHAR yêu cầu lưu trữ byte riêng biệt từ dữ liệu thực tế để ghi lại dữ liệu trong bao lâu. Tuy nhiên, nếu dữ liệu của bạn không phải là một độ dài không đổi và bạn đang nghĩ đến các cân nhắc về không gian, sẽ rất có ý nghĩa khi sử dụng VARCHAR vì CHAR sẽ luôn sử dụng một byte cho mỗi bit chiều dài được khai báo cho dù có bất kỳ điều gì trong không gian đó .

Cuối cùng, mặc dù, nó có thể không tạo ra sự khác biệt lớn như lượng dữ liệu liên quan là khá nhỏ.

Đây là nơi tôi nhận được thông tin của mình: http://dev.mysql.com/doc/refman/5.0/en/char.html Nếu bạn theo liên kết, hãy đặc biệt chú ý đến biểu đồ nhỏ vì nó đưa ra ví dụ về cách dữ liệu được xử lý với VARCHAR so với CHAR.

3

Trong MS SQL VARCHAR (1) sử dụng BA byte bộ nhớ và CHAR (1) sử dụng một byte dung lượng lưu trữ.

CHAR (1) hiệu quả hơn VARCHAR (1) trong quá trình xử lý và lưu trữ.

Điểm 'hòa vốn' trên VARCHAR sẽ lớn hơn 3 ký tự nếu sử dụng dữ liệu có độ dài thay đổi.

Nếu sử dụng độ dài cố định thì CHAR luôn hiệu quả hơn hai byte.

REF: http://msdn.microsoft.com/en-gb/library/ms176089.aspx

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