在使用MySQL的過程當中,踩過幾回Null的坑,因此專門查了一下Mysql中關於Null的表述。sql
【爲何儘可能避免NULL】性能
- null在Mysql中是一個很是特殊的存在,MySQL在遇到它是要特殊處理,並且還須要更多的存儲空間。
- 若是查詢中包含有null的列,對MySQL來講,會使得索引、索引統計和值的比較都更加複雜。
- 當可爲null的列被索引時,每一個索引記錄須要一個額外的字節。在MyIsam裏甚至還可能致使固定大小的索引變成可變大小的索引,甚至致使索引失效。
- 一般把null改成not null帶來的性能提高比較小,可是若是計劃在該列上創建索引,就應該將該列設置爲not null
總結:在創建索引的列上應該設置爲not null,平時也應該儘可能將列設置爲not null,若後期業務增長鬚要添加索引,就能夠避免問題。索引
參考資料《高性能MySQL》第四章統計