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
- SQL Server database mail問題診斷一例SQLServerDatabaseAI
- springboot @RequestBody bean 物件 為空問題Spring BootBean物件
- SQLAlchemy in 查詢空列表問題分析SQL
- RDSforSQLserver空間問題排查彙總SQLServer
- shell 變數賦值問題變數賦值
- vue元件(component)傳值問題Vue元件
- 判斷空值
- [20240807]數值累加的問題.txt
- 股票問題-求收益最大值
- 全排列價值(數學問題)
- go os.FileMode()傳值問題Go
- 遊戲是否存在價值問題?遊戲
- 關於css權值的問題CSS
- scrapy 爬取空值
- 解決split無法得到空字串問題字串
- Linux磁碟空間佔滿問題快速排雷Linux
- .Net Core IFormFile 始終為空的問題ORM
- [BUG反饋]onethink\ThinkPHP\Library\OT\Database.class.php 問題反饋PHPDatabase
- [問題貼] 如何解決獲取到的 toast 的文字為空的問題?AST
- 二元函式的極值與最值問題函式
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- 問你個問題:如何衡量1瓦特的價值?
- 滑動視窗最大值問題
- 問題分享:Js引用型別賦值JS型別賦值
- python中傳值和傳地址問題Python
- 父子元件之間的傳值問題元件
- 我們在講的 Database Plus,到底能解決什麼樣的問題?Database
- [20210528]oracle大表空間預分配問題.txtOracle
- java.lang.NullPointerException 空指標異常問題JavaNullException指標
- 為什麼問題空間與解決方案空間如此重要? - Nikhil Gupta
- 關於python中填充缺失值的問題Python
- SAS 數值儲存方式和精度問題
- 如何解決自增列賦值的問題賦值
- 滑動視窗的最大值問題
- 元件複用傳值(待解決問題)元件
- Ajax與Flask傳值的跨域問題Flask跨域
- js基礎-20-js物件賦值時的key值問題JS物件賦值