2011-01-28 53 views
5

我正在建立一個表,將在字段中接收不同的值,想象一個日誌表,「值」字段可以是數字,小字符串或大文本等。
所以我很奇怪我是否應該創建「值」字段爲文本或創建兩個字段,一個用於小輸入,如日期,數字和一些字符串,另一個僅用於文本輸入。使用varchar或文本在mysql中的動態字段?

所以,我的問題是這樣的: 這個「value」字段應該是一個Varchar以及其他一些「value2」作爲文本,或者創建一個字段文本,MySQL將管理這個正確嗎?

恐怕只創建一個文本字段對於性能可能是一件壞事。

編輯:數量,日期時間等會被強制轉換爲字符串插入之前,那不是點

謝謝,

+0

或者你可能只是不想做那樣的事情?這張桌子的目的是什麼? – Mchl 2011-01-28 14:14:35

+0

他們是一批命令。用戶可以創建對象,但不會保存,直到由管理員 – Jonathan 2011-01-28 14:17:06

+0

批准,我必須能夠向其他用戶顯示這些對象有更新或插入,因此他們不會創建或更新同一個東西 – Jonathan 2011-01-28 14:20:59

回答

3

你知道最大的投入會有多大?如果您施加限制或知道最大輸入量有多大,則可以使用varchar(其版本號爲< 5.0.3的255個字符,版本> = 5.0.3的版本爲65,535)。否則,使用Text可能會更好,因爲它擁有更多(65,535 * 2^16-1)。作爲替代方案,如果用戶正在創建已經有表格的事物(例如將事件添加到日曆中),則可以在表格上放置一個「is_approved」列並僅顯示已批准的列,或者搜索所有內容檢查重複項。

http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html

0

的varchar字段可以處理不同的輸入的,你是提但作爲一個字符串,而不是一個整數或日期時間。

+0

是啊,在被插入字段之前,東西將被轉換爲字符串,但是,它們可以是非常小的東西,如布爾型0,-1或全文,如產品的描述。我的問題是,如果我可以有一個字段文本來處理這個問題,或者我應該創建一個varchar和一個文本來處理它們?甚至是特定的,創建每種類型之一,如int,float,datetime,varchar,text等... – Jonathan 2011-01-28 14:15:09

1

如果存在的存儲使用varchar()數據的長度的限制(例如MySQL 5.0.3 VARCHAR最大長度可高達65,535)

如果沒有具體的限制,然後使用'文本'字段類型。