Cơ sở dữ liệu rất quan tâm đến hiệu suất - tốc độ và giảm thiểu lưu trữ. Trong hầu hết các phần khác của thế giới máy tính, bạn sẽ không bị làm phiền về việc có bao nhiêu ký tự trong chuỗi ký tự của bạn; nó có thể là một, nó có thể là toàn bộ nội dung của một cuốn bách khoa toàn thư; tất cả chỉ là một chuỗi. Trên thực tế, rất nhiều ngôn ngữ thậm chí không làm phiền bạn về việc đó là một chuỗi hay một số.
Nhưng khi máy tính trở nên nhanh hơn và có được nhiều bộ nhớ hơn, mọi người sẽ đưa thêm dữ liệu vào cơ sở dữ liệu của họ và thực hiện các truy vấn nhanh hơn. Đối với một cơ sở dữ liệu, CPU và bộ nhớ cũng hạn chế như ngày nay khi chúng còn ở bộ nhớ chính 64Kb và ổ cứng 10Mb (trên máy tính máy tính lớn ).
Một số byte cố định dễ xử lý hơn nhiều so với số có độ dài thay đổi. 10 byte dễ dàng hơn rất nhiều để xử lý hơn 1.000.000. Vì vậy, cơ sở dữ liệu của bạn muốn bạn cung cấp cho nó một gợi ý để nó có thể cung cấp cho bạn một gigabyte kết quả từ terrabyte dữ liệu trong vài giây. Nếu bạn không sử dụng cơ sở dữ liệu của mình quá nhiều, bạn sẽ không cần tốc độ mà nó cung cấp và sẽ khó chịu với những câu hỏi không cần thiết. Nhưng nếu bạn cần hiệu suất, bạn sẽ vui lòng cung cấp cho nó một số gợi ý.
Như đã lưu ý trong các câu trả lời khác, hãy sử dụng char
nếu nó luôn sử dụng một số ký tự nhất định, varchar
nếu độ dài có thể thay đổi nhưng nó không quá lớn (tôi đoán là hầu hết DB coi nó như một char
hoặc text
tùy thuộc vào kích thước) và text
nếu nó có thể là bất kỳ chiều dài. Nếu SQL của bạn cố gắng sử dụng một text
cột, cách tốt nhất là tóm tắt nó bằng cách nào đó và đặt nó vào một cột char
nhỏ hoặc varchar
cũng vậy, sau đó hãy thực hiện where
và order by
đó. Tất nhiên, đó chỉ là khi hiệu suất quan trọng với bạn.
text
không được dùng nữa. Cũng có những cân nhắc về việc sử dụng có liên quan đến nơi lưu trữ dữ liệu và cách thức truy cập dữ liệu.