我有一個用戶問題表,每個問題都有一個「question_score」字段。對於這個領域,如果我允許它是一個NULL,那麼這可能會節省一些空間,甚至可能節省一些CPU時間,是嗎?NULL或設置默認值
question_id(int)| quesion_name(varchar)| question_score(int)...
我有一個用戶問題表,每個問題都有一個「question_score」字段。對於這個領域,如果我允許它是一個NULL,那麼這可能會節省一些空間,甚至可能節省一些CPU時間,是嗎?NULL或設置默認值
question_id(int)| quesion_name(varchar)| question_score(int)...
您不會保存任何空間或CPU時間。
即使值爲NULL
,MySQL仍然必須存儲這個事實。
有時,許可NULL
值是正確的做法,但肯定不是當原因是一些不存在的空間優化。默認值通常是要走的路。
在我看來,空值總是一個不行。請至少在第三級申請database normalization。可能你的db結構不是最優的。
總之,沒有。這是一個正確的問題,而不是表現。空值幾乎總是會導致不一致和不正確的結果。最好的策略是以正常形式設計沒有空值的數據庫,除非你找到一個令人信服的理由否則。
如果在輸入數據時無法知道數值,則使用空值,除非有合理的選擇。例如,如果你不知道某個東西的名字,那麼你可能有一個默認值'Unknown'。但是,如果您不知道結束日期,請勿放入一些您必須記住要編碼的假數據。並且不要輸入假想的數據,而不是假設的數值(例如,價格爲0),否則您將無法告訴您尚未設定價格的物品。空值是好的,在適當的時候使用它們。在我30年的數據庫體驗中,使用假數據替代空值(更有可能出現問題的地方是沒有返回正確的結果,但不知道它)要困難得多正確處理空值。
謝謝你,HLGEM – lovespring 2011-03-04 12:38:41
你會嘗試顯示錶結構嗎? – 2011-03-03 15:22:13
你會總結分數嗎?或者以任何其他邏輯使用它們? – 2011-03-03 15:25:53
高分問題排查問題第一次。 – lovespring 2011-03-03 15:32:35