欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中NULL對索引的影響深入講解

 更新時間:2019年07月04日 10:06:42   作者:CayChan  
這篇文章主要給大家介紹了關于MySQL中NULL對索引的影響的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

看了很多博客,也聽過很多人說,包括我們公司的DBA,說MySql中如果某一列中含有null,那么包含該列的索引就無效了。

翻了下《高性能MySQL第二版》和《MySQL技術內幕——InnoDB存儲引擎第2版》,并沒有看到關于這個的介紹。但在本地試了下,null列是可以用到索引的,不管是單列索引還是聯(lián)合索引,但僅限于is null,is not null是不走索引的。

后來在官方文檔中找到了說明,如果某列字段中包含null,確實是可以使用索引的,地址:https://dev.mysql.com/doc/refman/5.7/en/is-null-optimization.html。

在mysql5.6和5.7下均可,存儲引擎為InnoDB。

數(shù)據(jù)如下:

1. 單列索引

給name列建單列索引:

查詢name為null的行:

查詢name為'test0'或為null的行:

可以發(fā)現(xiàn)都可以用到索引。

2. 聯(lián)合索引

給age和name添加聯(lián)合索引:


查詢age為14并且name為null的行:

可以發(fā)現(xiàn)同樣用到了索引。

3. 其他

雖然MySQL可以在含有null的列上使用索引,但不代表null和其他數(shù)據(jù)在索引中是一樣的。

不建議列上允許為空。最好限制not null,并設置一個默認值,比如0和''空字符串等,如果是datetime類型,可以設置成'1970-01-01 00:00:00'這樣的特殊值。

對MySQL來說,null是一個特殊的值,Conceptually, NULL means “a missing unknown value” and it is treated somewhat differently from other values。比如:不能使用=,<,>這樣的運算符,對null做算術運算的結果都是null,count時不會包括null行等,null比空字符串需要更多的存儲空間等。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • MySQL安裝失敗的原因及解決步驟

    MySQL安裝失敗的原因及解決步驟

    因很多同學安裝mysql總是出問題,所以下面這篇文章主要給大家介紹了關于MySQL安裝失敗的原因及解決步驟,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 在idea中如何操作MySQL數(shù)據(jù)庫

    在idea中如何操作MySQL數(shù)據(jù)庫

    這篇文章主要介紹了在idea中如何操作MySQL數(shù)據(jù)庫問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Mysql prepare預處理的具體使用

    Mysql prepare預處理的具體使用

    本文主要介紹了Mysql prepare預處理,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • MySQL索引失效十種場景與優(yōu)化方案

    MySQL索引失效十種場景與優(yōu)化方案

    這篇文章主要介紹了MySQL索引失效十種場景與優(yōu)化方案,文中有詳細的代碼示例供參考閱讀,感興趣的朋友可以看一下
    2023-05-05
  • MySQL ifnull()函數(shù)的具體使用

    MySQL ifnull()函數(shù)的具體使用

    本文主要介紹了MySQL ifnull()函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • MySQL從MyISAM轉換成InnoDB錯誤與常用解決辦法

    MySQL從MyISAM轉換成InnoDB錯誤與常用解決辦法

    由于一些程序的要求,需要MyISAM數(shù)據(jù)引擎或InnoDB,下面是具體的解決方法,經(jīng)測試偶爾會出現(xiàn)一些問題。
    2011-05-05
  • mysql連接器之mysql-connector-java問題

    mysql連接器之mysql-connector-java問題

    這篇文章主要介紹了mysql連接器之mysql-connector-java問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Mysql四種分區(qū)方式以及組合分區(qū)落地實現(xiàn)詳解

    Mysql四種分區(qū)方式以及組合分區(qū)落地實現(xiàn)詳解

    對用戶來說,分區(qū)表是一個獨立的邏輯表,但是底層由多個物理子表組成,下面這篇文章主要給大家介紹了關于Mysql四種分區(qū)方式以及組合分區(qū)落地實現(xiàn)的相關資料,需要的朋友可以參考下
    2022-04-04
  • MySQL存儲引擎InnoDB的配置與使用的講解

    MySQL存儲引擎InnoDB的配置與使用的講解

    今天小編就為大家分享一篇關于MySQL存儲引擎InnoDB的配置與使用的講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • mysql全文模糊搜索MATCH AGAINST方法示例

    mysql全文模糊搜索MATCH AGAINST方法示例

    這篇文章主要介紹了mysql全文模糊搜索MATCH AGAINST方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論