2011-11-14 109 views
0

可能重複:
NULL in MySQL (Performance & Storage)性能優化:空允許/不允許VS性能,如果不是關鍵

你強烈建議取消NULL允許一列在一個表,如果:

  • 該列不是關鍵,
  • 該列可以被SELECT或INSERT到表或UPDATEd中,但從未在任何查詢的WHERE,連接和其他部分中使用(WHERE,JOIN等可以在我們決定索引哪個列以獲得更好性能時計數)。

因此,如果您將上述列中的複選框「NULL」選中(即允許爲NULL),是否會影響性能?

我希望的答案(至少爲MySQL)是:

  • 沒有,也不會影響甚至1%,或
  • 沒有,也不會影響在所有。
+0

不要*檢查或取消選中* NULL是你在你的MySQL客戶端中做的,可能是phpMyAdmin。你實際做的是讓列包含NULL值或不在相應的CREATE/ALTER TABLE語句中。 – Konerak

回答

1

是的,我建議你做任何不需要是NULL,NOT NULL的列。

在我看來,它是SQL中的一個「缺陷」,默認情況下啓用了NULL。

原因與性能無關,但對於應用程序的正確性。如果你有一個必須的列值,那麼使它不爲NULL更有意義(事實上,NULL值將是一個錯誤)。如果有意義,請使用DEFAULT值。

簡而言之:除非數據庫結構中有一個有效的原因,否則任何列都不應該爲空。

還要注意,NULL在唯一索引中做了「特殊」的事情 - 允許有幾行帶有NULL。