2011-05-06 68 views
1

使用NULL填充表格上的空單元格會使搜索/查詢更快嗎?MySQL - '允許NULL'的用法

例如是這樣的

90 2 65 2011-04-08 NULL NULL  
134 2 64 2011-04-13 NULL 07:00:00  
135 2 64 2011-04-13 NULL 07:00:00  
136 2 64 2011-04-13 NULL 22:45:00  
137 2 64 2011-04-14 NULL 19:30:00 

90 2 65 2011-04-08   
134 2 64 2011-04-13   07:00:00 
135 2 64 2011-04-13   07:00:00 
136 2 64 2011-04-13   22:45:00 
137 2 64 2011-04-14   19:30:00 

更好,如果任何人都可以告訴我使用將非常感激NULL(性能,良好的做法,等)任何具體的優勢。

+0

在某些其他「空值」(例如0或空字符串)上使用NULL將不會影響性能**(可能除外最病理學設計的病例)。所以,**請不要用NULL來考慮「性能」。然而,使用NULL列和糟糕的時候是很好的時機 - 當然這取決於模型。 – 2011-05-06 01:27:53

+0

謝謝@pst - 我google了一下,但找不到一個很好的答案 - 你看起來不錯 - 你想添加一個答案嗎? – pepe 2011-05-06 01:30:49

+0

會有更好的答案:) – 2011-05-06 01:32:43

回答

4

存在語義差異。

  • NULL意味着 「值未知或不適用」。

如果這描述了該列的數據,然後使用它。

  • 空字符串的意思是「值已知,它是'虛無'」。

如果這描述了該列的數據,然後使用它。當然,這隻適用於字符串;對於其他數據類型有這樣一個場景是不尋常的,但通常對於數字字段,值爲0在這裏是合適的。

總之,這主要取決於你的領域是什麼意思。當你知道你代表的是什麼數據時,擔心後來的性能和性能分析。 (NULL vs ""永遠不會成爲你的瓶頸)

+0

+1有時我希望在SQL中有一個「我問過,但沒有得到回覆」的值。 – 2011-05-06 01:31:47

+0

@pst:聽起來像'NULL'給我。不過,這又取決於模型。 – 2011-05-06 01:32:46

+0

謝謝@tomalak - 有問題的表是一個數據表,用戶存儲各種記錄,如日期,位置,鍛鍊類型,持續時間等 - 並非所有字段都是強制性的,所以會有一些空白整個表 - 我想知道,如果這張桌子變得很大,有很多用戶和記錄,他們是否會對性能產生負面影響 – pepe 2011-05-06 01:39:53