2010-01-18 78 views
1

所以我創建了一個表來發表評論,我想知道。什麼是評論細節的好類型?我把長篇文字。那麼,爲什麼人們需要varchar如果longtext可以處理它呢?另外,我需要哪種類型的用戶名?關於MySQL中的類型的問題

索引「primary」的用途是什麼?索引的目的是什麼?

更新: 讓我們說一個評論實際上是一個審查。

回答

2

這是事實,TEXT可以處理你的VARCHAR或CHAR場放置任何輸入。實際上,TEXT可以處理您想要放入DECIMAL,INT或幾乎任何其他類型的數據。遵循這個邏輯,我們不妨使每一列成爲TEXT類型。

但是這將是一個錯誤。爲什麼?由於對預期輸入使用適當的列類型,因此數據庫可以更好地優化查詢,使用更少的磁盤空間並使數據模型更易於理解和維護。

關於以下問題:用戶名列應該使用VARCHAR(20),因爲您希望並期望大多數用戶名會變短,通常不會超過10-20個字符。對於評論專欄(比如電影評論或書評),TEXT類型將是合適的,因爲評論可以跨越單個段落到多個頁面。

在問候指標,嘗試此鏈接:

http://20bits.com/articles/interview-questions-database-indexes/

0

這取決於您的系統中有什麼「註釋」。通常VARCHAR對於註釋和用戶名都是非常標準的。這限制你約255個字符,這通常是可以接受的。如果您在評論中需要更多的字符,可以將它改爲文本,這會給您帶來超過65k的字符。請參閱String Types Reference

+0

我怎麼知道哪種類型允許哪些字符?那麼,爲什麼當longtext重疊它的函數時會需要varchar?我敢肯定,世界上有很多事情都是這樣運作的,但我只是想進一步挖掘我是否缺乏特殊原因。 – Strawberry 2010-01-18 03:11:43

+0

使用longtext發表評論或用戶名喜歡將一支火箭筒帶到水槍的戰鬥中。 – Sampson 2010-01-18 03:13:56

0

TEXT NOT NULL。這給了足夠的空間,有2個字節的開銷,並且通常沒有問題。

關於TEXT

在比較,TEXT是空間擴展 以適應對象相比,恰好 像CHAR和VARCHAR。

對於BLOB和TEXT列上的索引, 必須指定索引前綴 的長度。對於CHAR和VARCHAR,前綴 的長度是可選的。請參見第7.4.2節「 」列索引「。

BLOB和TEXT列不能有 DEFAULT值。

如果使用帶有一個 TEXT數據類型BINARY屬性,列被分配 列 字符集的二進制排序。

關於VARCHAR:

值在VARCHAR列是 可變長度字符串。可以將指定長度爲 的值設置爲MySQL 5.0.3之前的0至 255,0.0.3及更高版本中的0至 65,535。 在MySQL 5.0.3一個 VARCHAR的有效最大長度和後面是 受到的最大行大小 (65535個字節,這是其中 所有列共用)和 所使用的字符集。

更多在:http://dev.mysql.com/doc/refman/5.0/en/blob.html

0

看一看這個web page,它列出了所有的MySQL字段類型,並描述它們是什麼,以及他們如何是彼此不同。