database 空值問題
很多人喜歡把欄位預設設定為空,然後用空去判斷邏輯。比如select * from t where xx is null.其實這種做法有較大的問題。我們例舉一下:如圖1
圖1
然後我們對不同的列分別聚合一下。如圖2.
圖2.
每個SQL都是全表查詢。但是count的值卻不一樣。因為null 不計入。所以我們對列建立索引的時候,索引也不包括null。(一般來說都這樣)
所以一般where xx is null也基本上用不到索引(極端情況另外再說)。這也就是我說不要用null作為業務判斷的原因。
一般資料庫都這樣。比如MySQL 如圖3.
圖3
下面看兩個儲存過程。
如圖4,分別執行這兩個儲存過程。
圖4
這個儲存過程不是我獨創的,主要是說明null既不屬於大於0也不屬於小於0.
這就是其實我們一般對null 有一個誤解。我們一直理解是空。但是實際上理解為 “不確定”更加好一些。如果這樣理解,那麼我們就不會去在程式中寫is null了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2932029/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Jtti:如何解決空間ping值低的問題?Jtti
- Oracle-空值null和數字相加的問題-nvl函式OracleNull函式
- SQL Server資料庫中處理空值時常見問題SQLServer資料庫
- sqlserver、oracle資料庫排序空值null問題解決辦法SQLServerOracle資料庫排序Null
- database link 關閉session問題DatabaseSession
- Flashback Database特性常見問題的問與答Database
- MySQL 最小缺失值問題MySql
- [求助]jbuilder中Database Pilot的問題UIDatabase
- 檢測磁碟空間問題
- oracle 段空間管理問題Oracle
- alter database datafile .... offline drop的問題Database
- alter database backup controlfile to trace的問題Database
- 遊戲是否存在價值問題?遊戲
- shell 變數賦值問題變數賦值
- Cookie值中文亂碼問題Cookie
- Java8集合filter過濾Integer數值為空問題解決方案JavaFilter
- SQLAlchemy in 查詢空列表問題分析SQL
- RDSforSQLserver空間問題排查彙總SQLServer
- Tablespace Fragmentation - 表空間碎片問題Fragment
- swap空間不足問題解決
- linux fork程式空間問題Linux
- v$database裡面的created列值Database
- SQL Server database mail問題診斷一例SQLServerDatabaseAI
- alter database datafile offline drop相關問題Database
- go os.FileMode()傳值問題Go
- 關於css權值的問題CSS
- vue元件(component)傳值問題Vue元件
- [基礎問題] 陣列賦值陣列賦值
- 關於Session值丟失問題Session
- html:text初始值問題.急!!HTML
- 全排列價值(數學問題)
- null(空值)小結Null
- sysaux 表空間不足問題處理UX
- system表空間不足的問題分析
- 解決FRA空間滿的問題
- imp/EXP 表空間轉換問題
- 二元函式的極值與最值問題函式
- 關於GI和DATABASE軟體版本高低的問題Database