最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql中關(guān)于between和in的區(qū)別

 更新時(shí)間:2023年07月28日 10:21:48   作者:兩菜一湯、  
這篇文章主要介紹了mysql中關(guān)于between和in的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mysql中between和in的區(qū)別

下面兩條語(yǔ)句有什么區(qū)別,為什么都提倡使用范圍查詢 ?

select * from T where k in(1,2,3,4,5)
select * from T where k between 1 and 5

其實(shí)between和in這兩個(gè)關(guān)鍵字應(yīng)用的場(chǎng)景重合度并不高,但是我們可以通過(guò)思考這么一個(gè)問(wèn)題,來(lái)理清這兩者執(zhí)行的執(zhí)行過(guò)程和邏輯。

要回答這個(gè)問(wèn)題就需要先了解索引的數(shù)據(jù)結(jié)構(gòu),以及mysql索引利用b+樹(shù)執(zhí)行查詢的執(zhí)行過(guò)程,這里先默認(rèn)大家具備了這個(gè)條件。

先區(qū)分下可能的情況。

第一個(gè)是k字段是主鍵,第二個(gè)是k字段是二級(jí)索引,第三種情況是k是普通字段。

另外,我們需要搞清楚in關(guān)鍵字和between兩種查詢方式在執(zhí)行的時(shí)候的不同之處;

  • in關(guān)鍵字其實(shí)是等值查詢的合并,將多個(gè)等值查詢合并成一個(gè),減少查詢和返回次數(shù);
  • between查詢是典型的范圍查詢,在命中索引的情況下,會(huì)直接在查詢首個(gè)符合條件的數(shù)據(jù),然后根據(jù)指針一次獲取下一個(gè)葉子節(jié)點(diǎn)數(shù)據(jù)進(jìn)行比較直到查詢到不符合條件的數(shù)據(jù)為止。
  • 現(xiàn)在我們?cè)賮?lái)對(duì)三種情況進(jìn)行梳理,

k是主鍵索引和二級(jí)索引的情況是相似的,唯一的區(qū)別就是二級(jí)索引的話可能需要回表,回表不是這次討論的重點(diǎn),所以我們把這兩種情況合并到一起說(shuō);

in 條件實(shí)際查詢的時(shí)候是多次搜索索引樹(shù),而 between 條件只需要執(zhí)行一次搜索樹(shù)的查詢就可以獲得結(jié)果,本題為例,加入索引的底層實(shí)現(xiàn)結(jié)構(gòu)使用的是b+樹(shù),使用關(guān)鍵字 in 要樹(shù)搜素5次,也就是做5次等值查詢;而 bewteen 基于b+樹(shù)的范圍查詢邏輯,當(dāng)找到第一個(gè)滿足條件的葉子節(jié)點(diǎn)后,根據(jù)當(dāng)前葉子節(jié)點(diǎn)指向的下一個(gè)葉子節(jié)點(diǎn)繼續(xù)查詢,直到查到不滿足條件的葉子節(jié)點(diǎn),所以只需要樹(shù)搜索一次。

而對(duì)于k不是索引的情況,in條件相當(dāng)于執(zhí)行了多次的全文遍歷,而between其實(shí)也是全文遍歷,都不是一個(gè)好的方式。

mysql條件查詢語(yǔ)句between and和in的效率比較

工作需要,寫(xiě)按sensor_uuid在某范圍查詢的語(yǔ)句:

1.

select * from xz_sensor_data where sensor_time>='2019-03-28 00:00:00.000' and sensor_time<='2019-03-28 08:00:00.000' and sensor_uuid in('20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','201901','201902','201903','201904','201905','201906','201907','201908','201909','201910','201911','201912','201913') ?order by sensor_time asc

2.

select * from xz_sensor_data where sensor_time>='2019-03-28 00:00:00.000' and sensor_time<='2019-03-28 08:00:00.000' and (sensor_uuid ?between '19' and '36' or sensor_uuid between '201900' and '201914' )

發(fā)現(xiàn)第二條執(zhí)行效率高。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL按常規(guī)排序、自定義排序和按中文拼音字母排序的方法

    MySQL按常規(guī)排序、自定義排序和按中文拼音字母排序的方法

    MySQL常規(guī)排序、自定義排序和按中文拼音字母排序,在實(shí)際的SQL編寫(xiě)時(shí),我們有時(shí)候需要對(duì)條件集合進(jìn)行排序。下面給出3種比較常用的排序方式,一起看看吧
    2017-04-04
  • MySQL中NULL對(duì)索引的影響深入講解

    MySQL中NULL對(duì)索引的影響深入講解

    這篇文章主要給大家介紹了關(guān)于MySQL中NULL對(duì)索引的影響的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 淺談MySQL中的六種日志

    淺談MySQL中的六種日志

    MySQL中存在著6種日志,本文是對(duì)MySQL日志文件的概念及基本使用介紹,不涉及底層內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • MySQL邏輯備份into?outfile

    MySQL邏輯備份into?outfile

    這篇文章主要介紹了MySQL?備份之?into?outfile,文章圍繞主題展開(kāi)詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下
    2022-05-05
  • MySQL安裝后不能用是什么情況該如何解決

    MySQL安裝后不能用是什么情況該如何解決

    之前安裝過(guò)MYSQL好像不用手動(dòng)啟動(dòng)服務(wù),具體也忘記了,但我上回給公司安裝的那個(gè)是要手動(dòng)安裝服務(wù)的,如果mysql剛剛安裝不能用,可能是服務(wù)沒(méi)有安裝
    2014-03-03
  • MySQL?EXPLAIN中的key_len索引使用實(shí)戰(zhàn)解析

    MySQL?EXPLAIN中的key_len索引使用實(shí)戰(zhàn)解析

    在MySQL執(zhí)行計(jì)劃中,key_len表示查詢實(shí)際使用索引的字節(jié)長(zhǎng)度,今天通過(guò)本文給大家介紹MySQL?EXPLAIN中的key_len索引使用實(shí)戰(zhàn)解析,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • MySQL 5.7.17 免安裝版本的安裝配置

    MySQL 5.7.17 免安裝版本的安裝配置

    這篇文章主要為大家詳細(xì)介紹了MySQL 5.7.17 免安裝版本的安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SQL算術(shù)運(yùn)算符之加法、減法、乘法、除法和取模的用法例子

    SQL算術(shù)運(yùn)算符之加法、減法、乘法、除法和取模的用法例子

    算術(shù)運(yùn)算符主要用于數(shù)學(xué)運(yùn)算,其可以連接運(yùn)算符前后的兩個(gè)數(shù)值或表達(dá)式,對(duì)數(shù)值或表達(dá)式進(jìn)行加(+)、減(-)、乘(*)、除(/)和取模(%)運(yùn)算,下面這篇文章主要給大家介紹了關(guān)于SQL算術(shù)運(yùn)算符之加法、減法、乘法、除法和取模用法的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • mysql免安裝版配置教程

    mysql免安裝版配置教程

    這篇文章主要為大家詳細(xì)介紹了mysql免安裝版配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • linux忘記mysql密碼處理方法

    linux忘記mysql密碼處理方法

    這篇文章主要為大家介紹下linux忘記mysql密碼處理方法,需要的朋友可以參考下。
    2011-08-08

最新評(píng)論

乃东县| 台北市| 离岛区| 富平县| 上饶市| 涞源县| 兴和县| 巴青县| 平原县| 中超| 旬邑县| 潼南县| 淮阳县| 安塞县| 惠安县| 抚顺市| 平果县| 霍州市| 炎陵县| 阳朔县| 聂荣县| 永仁县| 建德市| 武穴市| 叙永县| 榕江县| 万荣县| 大安市| 山东| 河东区| 宁夏| 肃北| 沅江市| 淮滨县| 滨州市| 九寨沟县| 临沭县| 四川省| 泊头市| 普格县| 常宁市|