文章詳情頁(yè)
mysql - 數(shù)據(jù)庫(kù)設(shè)計(jì)( scheme 設(shè)計(jì) ), 應(yīng)該極力避免 NULL 嗎?
瀏覽:102日期:2022-06-12 15:49:15
問(wèn)題描述
實(shí)際現(xiàn)象了解到:
NULL 語(yǔ)義不清晰
query 時(shí)不好優(yōu)化
如果表示空值, 可以有其他的替代方式( 邏輯上 )
VARCHAR(100) NOT NULL DEFAULT ’’;
INT NOT NULL DEFAULT 0;
預(yù)期現(xiàn)象希望能了解在設(shè)計(jì)scheme的時(shí)候, 對(duì)待NULL的態(tài)度( 記得有看過(guò)一篇文章說(shuō)過(guò), 應(yīng)該盡量: NOT NULL DEFAULT XXX)
問(wèn)題解答
回答1:是,應(yīng)該盡可能避免可為NULL的列,且盡可能顯示設(shè)置默認(rèn)值,尤其是被索引的列。mysql中,null占空間,如果該值被索引,那么其索引無(wú)效。
回答2:是的,判斷字段不為空的時(shí)候,還要用 is not null,mysql中的NULL其實(shí)是占用空間的,B樹(shù)索引時(shí)不會(huì)存儲(chǔ)NULL值的,所以如果索引的字段可以為NULL,索引的效率會(huì)下降很多。
排行榜

熱門(mén)標(biāo)簽