mysql數據庫設計字段不為空


起因,我設計數據庫的時候一般情況下默認是不願意讓字段為空的,因為is null這樣的話,是不走索引。所以我基本上設置了不為空。

因為設置了不為空,所以sql也要和原來的is null 變成="".之前用的逆向工程的andisnull查詢就會失效。

1.創建數據庫

 

2.創建腳本

CREATE TABLE `user` (
  `id` bigint NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `PK_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

3.給name增加索引

初始化數據

 

 

 

4.腳本測試

EXPLAIN select * from `user` where id=3 and name=""

 

 走索引了,並且數據查詢出來了

 

EXPLAIN select * from `user` where id=3 and name is null

 

 沒有走索引,數據還沒有查詢出來。

結論:大家在設計數據庫,字段不為null的時候,一定要記得額使用="",不要使用 is null.

對於身份證這些需要建立唯一索引的字段不能使用空字符串表示,只能設置字段為null。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM