2009-07-23 57 views
3

我不明白何時使用不同的長度來調用unicode。我一直在使用types.Unicode(255)爲我的postgres數據庫中的所有列,如地址,名稱,描述等。這樣做是不明智的?對於postgres中的所有列類型使用unicode(255)?

+1

我很抱歉不清楚。這裏是我的當前表的樣子: property_table = schema.Table('property',meta.metadata, schema.Column('id',types.Unicode(255),primary_key = True), schema.Column 'name',types.Unicode(255),nullable = False), schema.Column('address',types.Unicode(255),nullable = False), schema.Column('city',types.Unicode 255),nullable = False), schema.Column('state',types.Unicode(255),nullable = False), schema.Column('zip',types.Unicode(255),nullable = False) ) – teggy 2009-07-27 05:24:08

回答

0

在數據庫中使用適當的數據類型有很多原因。 Performance(pdf)是最大的擔憂,但也有其他原因。例如:

  • 日期將不會正確排序,除非他們是一個日期數據類型(通常爲UNIX時間戳)
  • 不能使用數學運算上存儲爲字符串
  • 「真」的數字作爲一個字符串不等於邏輯真
4

不知道你的意思是「統一(255)」 - 在PostgreSQL裏沒有這樣的數據類型:

# create table q (x unicode(255)); 
ERROR: type "unicode" does not exist 
LINE 1: create table q (x unicode(255)); 
         ^

也許你的意思是varchar(255)。在這種情況下 - 讓我問:如果你需要320個字符描述會發生什麼?

我個人更喜歡使用TEXT數據類型 - 因爲數據庫一般不關心字符串是100或1000個字符長。

2

值得添加到depesz的答案是,使用文本類型而不是varchar(n)或char(n)數據類型沒有性能損失,所以除非需要爲業務目的設置硬性限制才使用文本。即使那樣,使用長度約束的文本:-)

相關問題