精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官:MySQL BETWEEN AND 語句包括邊界嗎?

數據庫 MySQL
使用數據庫時,我們經常會用到范圍查詢,今天來聊一聊?MySQL 的 BETWEEN AND 語句。

使用數據庫時,我們經常會用到范圍查詢,今天來聊一聊 MySQL 的 BETWEEN AND 語句。

1.是否包含邊界

為了說明 BETWEEN AND 語句是否包括邊界,我們先創建一張表,SQL 如下:

CREATE TABLE`test3` (
`id`int(8) NOTNULL AUTO_INCREMENT,
`a`varchar(10) COLLATE utf8_bin DEFAULTNULL,
`b`varchar(10) COLLATE utf8_bin DEFAULTNULL,
`date`dateDEFAULTNULL,
`date_time` datetime DEFAULTNULL,
`time_stamp`timestampNULLDEFAULTNULL,
  PRIMARY KEY (`id`),
KEY`idx_a` (`a`)
) ENGINE=InnoDB AUTO_INCREMENT=11DEFAULTCHARSET=utf8 COLLATE=utf8_bin

我們插入 10 條數據,如下圖:

圖片圖片

圖片圖片

1.1 執行結果

  • 對 id 做范圍查詢
SELECT * FROM test3 WHERE id BETWEEN 2 AND 6;

查詢結果如下:

圖片圖片

圖片圖片

可以看到,對 id 做范圍查詢,包含了邊界值 2 和 6,是一個閉區間。

  • 對 date 做范圍查詢
SELECT * FROM test3 WHERE DATE BETWEEN '2025-08-28' AND '2025-08-31';

查詢結果如下:

圖片圖片

圖片圖片

可以看到,對 date 類型的字段進行范圍查詢,同樣包含了邊界值,是一個閉區間。

  • 對 date_time 做范圍查詢
SELECT * FROM test3 WHERE date_time BETWEEN '2025-08-28' AND '2025-08-31';

對 date_time 使用日期做范圍查詢,查詢結果如下:

圖片圖片

圖片圖片

可以看到,這個查詢漏掉了 2025-08-31 這一天的數據,是一個前閉后開的區間。

這是因為 MySQL 會自動將日期的時間部分補充為零點,所以上面的查詢語句等價于:

SELECT * FROM test3 WHERE date_time BETWEEN '2025-08-28 00:00:00' AND '2025-08-31 00:00:00';

為了不漏掉數據,可以將上面的查詢語句改為:

SELECT * FROM test3 WHERE DATE BETWEEN '2025-08-28' AND '2025-09-01';

對 time_stamp 使用日期做范圍查詢,結果跟 date_time 一樣。

1.2 總結

  • BETWEEN AND 語句是包括邊界值的,是一個前閉后閉的區間。BETWEEN A AND B 等價于 >= A AND <= B。
  • 注意時間類型的字段,DATETIME 和 TIMESTAMP,如果采用日期格式來查詢,結果是前閉后開的區間。BETWEEN A AND B 等價于 >= A AND < B。為了避免漏掉數據,datetime 和 timestamp 使用日期做范圍查詢,可以在后面的日期上加 1 天。

2.原理

2.1 執行器優化

對于 BETWEEN AND 語句,MySQL 優化器會在早期優化時把它優化成等值查詢,所以下面查詢 SQL

SELECT * FROM test3 WHERE id BETWEEN 2 AND 6;

在優化器看來完全等價與:

SELECT * FROM test3 WHERE id >= 2 AND id <= 6;

兩個 SQL 在性能上沒有差別。

2.2 性能

索引范圍掃描

如果 BETWEEN AND 語句的字段上有索引,則可以使用索引進行范圍掃描,效率很高。我們看一下上面一個 SQL 執行計劃如下:

EXPLAIN SELECT * FROM test3 WHERE id BETWEEN 2 AND 6;

圖片圖片

圖片圖片

type=range,代碼使用到了索引進行范圍掃描,查詢過程如下:

  1. 存儲引擎從索引樹的根節點開始,找到第一個 id >= 2 的索引條目。這個操作時間復雜度是 O(log n),非常高效;
  2. 從上面找到的第一個索引條目開始,沿著索引樹的葉子節點向后順序掃描;
  3. 當遇到第一個 id > 6 的索引條目時,停止掃描;
  4. 存儲引擎給執行器返回結果集。

全表掃描

如果 BETWEEN AND 語句的字段上沒有索引,只能進行全表掃描,比如下面的語句:

EXPLAIN SELECT * FROM test3 WHERE b BETWEEN 30 AND 50;

我們看一下執行計劃:

圖片圖片

圖片圖片

這就需要掃描表中的每一行記錄,逐一判斷字段 b 的值是否落在 [30, 50] 這個區間內。這個執行效率非常低。

非主鍵索引跟等值查詢不同的是,即使 BETWEEN AND 語句的字段加了普通索引,如果查詢的字段用不上覆蓋索引,也會走全表掃描。如下面的語句:

EXPLAIN SELECT * FROM test3 WHERE a BETWEEN 30 AND 50;

雖然字段 a 上面有普通索引,但是查詢的是表 test3 中的所有字段,也是走不上 a 這個索引的。我們看一下執行計劃:

圖片圖片

復合索引

我們再看一下復合索引的情況,我們新建一張表,SQL 如下:

CREATE TABLE`test4` (
`id`int(8) NOTNULL AUTO_INCREMENT,
`a`varchar(10) COLLATE utf8_bin DEFAULTNULL,
`b`varchar(10) COLLATE utf8_bin DEFAULTNULL,
`date`dateDEFAULTNULL,
`date_time` datetime DEFAULTNULL,
`time_stamp`timestampNULLDEFAULTNULL,
  PRIMARY KEY (`id`),
KEY`idx_a_b` (`a`, `b`)
) ENGINE=InnoDB AUTO_INCREMENT=11DEFAULTCHARSET=utf8 COLLATE=utf8_bin

在 test4 這張表上,我們建一個字段(a,b)的復合索引。 BETWEEN AND 語句是可以用最左前綴原則的。如果我們執行下面 SQL:

SELECT a,b,id FROM test4 WHERE a BETWEEN 2 AND 6 AND b = 3;

復合索引的第一列 a 使用了范圍查詢,第二列 b 作等值查詢。MySQL 可以利用索引快速找到字段 a 在范圍[2, 6]之間的數據,然后在這些結果中篩選出 b = 3 的記錄。這種情況下字段 a 使用了索引,但是字段 b 沒有用上索引。

圖片圖片

如果我們執行下面 SQL:

SELECT a,b,id FROM test4 WHERE a = 3 and b BETWEEN 2 AND 6;

復合索引的第一列 a 使用了等值查詢,第二列 b 做范圍查詢。這種情況也是可以走上索引的。

圖片圖片

如果我們執行下面 SQL:

SELECT a,b,id FROM test4 WHERE b BETWEEN 2 AND 6;

這種情況不符合最左前綴原則,所以是走不上索引的。

圖片圖片

索引下推

使用 BETWEEN AND 語句不能走索引下推。

我們再來創建一張表:

CREATE TABLE`test_temp` (
`id`INT(11) NOTNULLDEFAULT'0',
`a`VARCHAR(20) DEFAULTNULL,
`b`VARCHAR(10) DEFAULTNULL,
`c`VARCHAR(10) DEFAULTNULL,
`d`VARCHAR(10) DEFAULTNULL,
  PRIMARY KEY (`id`),
KEY`a_b`(`a`,`b`)
) ENGINE=INNODBDEFAULTCHARSET=utf8

插入幾條數據

INSERT INTO test_temp VALUES(100, 10, 20, 2, 1);
INSERT INTO test_temp VALUES(200, 10, 40, 4, 2);
INSERT INTO test_temp VALUES(300, 10, 30, 3, 3);
INSERT INTO test_temp VALUES(400, 40, 10, 1, 4);

如果我們執行下面的 SQL,是不能走索引下推的:

EXPLAIN SELECT * FROM test_temp WHERE a BETWEEN '10' AND '50' AND b < '50';

執行計劃如下:


圖片圖片

圖片圖片

而如果我們把 SQL 改成:

EXPLAIN SELECT * FROM test_temp WHERE a >= '10' AND a <=  '50' AND b < '50';

執行計劃如下:

圖片圖片

圖片圖片

可以看到,用上了索引下推。

3 總結

本文介紹了 BETWEEN AND 語句的用法、原理和性能,希望對你理解這個范圍查詢語句有所幫助 。


責任編輯:武曉燕 來源: 君哥聊技術
相關推薦

2025-10-09 01:11:00

2025-10-31 02:00:00

2022-08-02 06:31:32

Java并發工具類

2022-07-26 08:40:42

Java并發工具類

2025-03-26 01:25:00

MySQL優化事務

2022-05-23 08:43:02

BigIntJavaScript內置對象

2021-01-06 17:28:00

MySQL數據庫緩存池

2022-06-30 08:14:05

Java阻塞隊列

2025-06-30 01:55:00

2022-07-11 10:47:46

容器JAVA

2015-08-13 10:29:12

面試面試官

2019-10-21 09:56:37

MySQLCOUNTInnoDB

2020-03-06 15:36:01

Redis內存宕機

2024-10-16 15:01:20

2024-07-22 14:09:22

@AsyncJava

2022-07-15 08:22:42

對象符串鍵Symbol

2021-09-08 08:06:57

Redis原子性數據類型

2024-01-10 15:27:58

SessionCookieWeb 應用

2021-04-12 21:34:29

Redis故障數據

2023-02-16 08:10:40

死鎖線程
點贊
收藏

51CTO技術棧公眾號

亚洲a∨一区二区三区| 欧美三级电影在线看| 欧美诱惑福利视频| 久久出品必属精品| 日本1级在线| 欧美国产专区| 精品1区2区3区| 美脚丝袜一区二区三区在线观看| 全网免费在线播放视频入口| 亚洲精品粉嫩美女一区| www.亚洲精品| 欧美大片免费观看| www.成年人| 91精品国产综合久久久久久豆腐| 在线亚洲成人| 日韩午夜激情视频| 一区在线电影| 最新中文字幕在线观看视频| 日本久久成人网| 一区二区三区美女| 91在线高清免费观看| 亚洲一区 欧美| 怡红院成人在线| 久久免费看少妇高潮| 91精品国产精品| av不卡中文字幕| 国产原创在线观看| 国产在线精品一区二区三区不卡| 夜夜嗨av一区二区三区免费区| 日韩在线一级片| 天天摸天天干天天操| 精品91视频| 精品国产一区二区精华| 99中文字幕在线观看| 99久久久国产精品无码免费 | 国产精品久久不能| 制服 丝袜 综合 日韩 欧美| 吞精囗交69激情欧美| 久久日韩粉嫩一区二区三区| 日本久久久久亚洲中字幕| 亚洲国产欧美视频| 欧美7777| 国产精品乱人伦一区二区| 国产精品久久久久久久久久99 | www.爱久久| 亚洲国产精品一区二区久久| 狠狠色综合色区| 97久久久久久久| 国产日产精品一区二区三区四区的观看方式| 精品久久久久久久大神国产| 久久伊人资源站| 一级一级黄色片| 欧美成人激情| 日韩精品中文字幕一区| 亚洲一区二区三区av无码| 蜜臀久久99精品久久久| 国产精品外国| 色妞在线综合亚洲欧美| 91香蕉视频免费看| 变态调教一区二区三区| 91蜜桃在线免费视频| 国产成人精品一区| 三上悠亚在线观看视频| 9国产精品午夜| 一本色道亚洲精品aⅴ| 色涩成人影视在线播放| 高潮无码精品色欲av午夜福利| 亚洲成av人电影| 亚洲成人精品久久| 凹凸日日摸日日碰夜夜爽1| 免费黄色在线网站| 波多野结衣精品在线| 国产精品成人aaaaa网站| 国产女人被狂躁到高潮小说| 亚洲资源网站| 日韩午夜在线播放| 久久久精品三级| 日本aa在线| 欧美经典一区二区| 高清国产一区| 97超视频在线观看| 亚洲影院在线| 欧美精品一二区| 亚洲区自拍偷拍| 亚洲精品一区二区三区中文字幕| 色偷偷久久人人79超碰人人澡| 欧美精品一区二区性色a+v| 神马久久久久久久久久| 精品一区二区三区不卡| 欧美最近摘花xxxx摘花| 久久黄色小视频| 99九九热只有国产精品| 亚洲人成电影网站色| 久久国产免费视频| 欧美视频精品| 91激情在线视频| 日本a在线免费观看| 99中文字幕一区| 91麻豆国产在线观看| 成人综合电影| 国产一区二区在线不卡| 丝袜亚洲精品中文字幕一区| 久久久久久国产精品三级玉女聊斋| 欧美日韩国产一二三区| 成人福利视频在线| 在线观看中文字幕的网站| 精品久久久久久中文字幕动漫 | 致1999电视剧免费观看策驰影院| 日韩精品在线看| 天堂一区二区在线免费观看| 欧美理论电影| 亚洲最大成人av| 九九九久久久久| 久久99久久99精品免观看软件| 一区二区三区在线视频观看58| 欧美色欧美亚洲另类七区| 黑人操亚洲女人| 国产乱妇无码大片在线观看| 国产在线高清精品| 亚洲天堂avav| 久久国产综合精品| 国产成人91久久精品| 五月天综合激情| 亚洲国产影院| 91av视频在线观看| 日本在线观看视频网站| 亚洲午夜91| 欧美极品少妇xxxxⅹ免费视频| 永久免费未视频| 91视频一区| 综合欧美国产视频二区| 91视频免费看片| 成人av资源电影网站| 亚洲天堂av电影| 国产真实乱人偷精品人妻| 少妇精品久久久一区二区三区| 精品香蕉一区二区三区| 玖玖爱在线观看| 视频一区中文| 最近的2019中文字幕免费一页| 久久久久99精品成人| 热久久天天拍国产| www国产精品视频| 在线免费观看亚洲视频| 欧美日韩国产亚洲一区| 久久免费视频网站| 国产精品男女视频| 免费看精品久久片| 成人精品aaaa网站| 精品久久久久中文慕人妻| 国产福利精品一区| 久久66热这里只有精品| 国产三级在线免费| 亚洲精品乱码久久久久久 | 免费国产精品视频| 成人av电影在线| 欧美精品一区二区视频| 成人不用播放器| 亚洲视频一二三| cao在线观看| 欧美动物xxx| 欧美精品免费视频| jjzz黄色片| 国产中文字幕一区二区三区| 精品国产网站地址| 日韩欧美高清在线观看| 日韩高清中文字幕一区| 5566av亚洲| 国产在线网站| 亚洲精品成人天堂一二三| 日韩在线综合网| 日韩成人一区| 亚洲国产美女精品久久久久∴| 永久免费毛片在线观看| 狠狠色狠狠色综合日日tαg| 国产精品久久久亚洲| 性猛交xxxx乱大交孕妇印度| 久久精品一区蜜桃臀影院| 亚洲五码在线观看视频| 亚洲成人av观看| 亚洲精品一区在线观看| 国产一区二区三区精品在线| 精品999成人| 国产日韩中文字幕| 每日更新在线观看av| 一区二区三区在线观看视频| 美女一区二区三区视频| 日韩极品在线| 九九久久综合网站| 久久午夜鲁丝片| 99久久免费国产| 日本一二三区视频在线| 成人免费黄色| 亚洲欧美精品一区二区| 日本中文字幕免费观看| 国产精品正在播放| 亚洲永久激情精品| 日韩在线免费| 国产视频精品一区二区三区| 国产盗摄一区二区三区在线| 人人爽香蕉精品| 鲁丝一区鲁丝二区鲁丝三区| 男男gaygays亚洲| 4438成人网| 91精品国自产在线| 麻豆久久精品| 久久综合一区| 高清视频在线观看三级| 91.成人天堂一区| 999久久久国产| 青青草国产精品亚洲专区无| 欧美亚洲另类在线一区二区三区| аⅴ资源天堂资源库在线| 欧美mv日韩mv国产网站app| 动漫性做爰视频| 国产一区二区三区免费在线观看| 亚洲一区二区三区在线观看视频| av在线不卡精品| 在线观看久久久久久| 中国一级片黄色一级片黄| 国产视频在线观看一区二区三区| 欧美极品欧美精品欧美图片| 亚洲电影一级片| 日本精品久久久| 三级视频网站在线| 在线观看精品一区| 性欧美精品男男| 蜜臀av一区二区在线免费观看 | 欧美成人综合在线| 色噜噜夜夜夜综合网| 亚洲国产av一区| 日韩精品免费专区| 亚洲精品国产精品久久| 自拍偷拍欧美日韩| 欧美超级乱淫片喷水| 欧美 日韩 国产 成人 在线| 亚洲444eee在线观看| 久久久久久久久久久国产精品| 美女诱惑一区| 一区二区精品视频| 涩涩屋成人免费视频软件| 久久免费国产视频| 精品av中文字幕在线毛片| 欧美色综合久久| 永久久久久久久| av影院午夜一区| 欧美性猛交久久久乱大交小说| 成人免费看片39| 亚洲专区国产精品| 欧美a级在线观看| 一区二区三区动漫| av中文字幕免费在线观看| 亚洲成人精品一区| 精品成人av一区二区三区| 久久国产精品99精品国产| 国产 欧美 日本| 无码少妇一区二区三区| 国产精品你懂得| 黄页网站大全在线免费观看| 亚洲精品综合久久中文字幕| 国产精品久久免费| 午夜私人影院久久久久| 精品丰满少妇一区二区三区| 成人激情免费电影网址| 黄色国产小视频| 狠狠久久婷婷| 伊人婷婷久久| 欧美人体视频| 91免费看片在线| 超碰一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲 欧美 自拍偷拍| 91精品久久久久久久久99蜜臂| 啦啦啦免费高清视频在线观看| 日韩理论片一区二区| 97伦伦午夜电影理伦片| 国产精品影音先锋| 污色网站在线观看| 国产精品久久久久毛片大屁完整版| 在线看无码的免费网站| 亚洲美女久久| 国产福利久久精品| 亚洲资源在线| 国产精品免费久久久久久| 嗯~啊~轻一点视频日本在线观看| 日韩视频永久免费观看| 五十路在线观看| 欧美电影精品一区二区| 一级成人免费视频| 在线观看欧美日本| 日产精品久久久| 亚洲1区2区3区视频| 免费在线观看av网址| 中文字幕一区二区三区乱码在线| 中文字幕免费视频| 久久亚洲精品小早川怜子| 天天躁日日躁狠狠躁av| 国产一区999| 污污视频在线免费| 九九九久久久精品| 在线看的黄色网址| 日韩av电影天堂| 99精品视频播放| 亚洲一区中文| 欧美一级视频免费看| 午夜视频一区| 91国在线高清视频| 亚洲不卡av不卡一区二区| 亚洲午夜在线观看| 成人av二区| 婷婷亚洲婷婷综合色香五月| 久久99国内| 精品在线不卡| 欧美亚洲国产日韩| 国产成人精品自拍| 第一区第二区在线| 国产成人免费电影| 老汉色老汉首页av亚洲| 久久免费一区| 欧美美乳视频| 亚洲乱码一区二区三区| 国产精品国产一区| 裸体裸乳免费看| 欧美精品自拍| 成人在线播放网址| 国产日韩欧美一区二区三区在线观看| 777777av| 久久精品一区| 手机在线成人免费视频| 精品一区免费av| 一个人看的视频www| 成人性生交大片免费看视频在线 | 日韩精品一页| 亚洲一区二区三区777| 午夜视频在线观看精品中文| 国产自产在线视频一区| 亚洲va久久| 一区二区不卡在线观看| 欧美不卡一区| 无码播放一区二区三区| 日韩黄色小视频| 成人性生交视频免费观看| 成人小视频在线观看| 日韩av在线看免费观看| 国产精品天干天干在线综合| 少妇人妻丰满做爰xxx| 亚洲成人综合在线| 波多野结衣一区二区三区四区| 欧美精选在线播放| 少妇喷水在线观看| 色婷婷av一区二区三区在线观看| 亚洲第一图区| 国产成人一区二区| 国产精品igao视频网网址不卡日韩| 国产精品久久久久久久免费大片| 岳的好大精品一区二区三区| 欧美h视频在线观看| 亚洲国产专区校园欧美| 亚洲精品自拍网| 欧美va天堂| 精品99一区二区| 99精品人妻无码专区在线视频区| 亚洲第一区第一页| 国产大片在线免费观看| 九九热最新视频//这里只有精品 | 91国产精品电影| 免费污视频在线一区| 91久久精品www人人做人人爽| 免费看久久久| 艳母动漫在线免费观看| 亚洲精品精选| 国产亚洲视频一区| 99精品视频一区| 国产麻豆a毛片| 欧美日韩中文字幕在线视频| 国产老妇伦国产熟女老妇视频| 日韩精品免费在线视频观看| 成年视频在线观看| 国产精品久久久久一区二区| 日本在线中文字幕一区| 中国黄色录像片| 蜜臀久久99精品久久久久久9 | 麻豆国产欧美一区二区三区r| 亚洲在线欧美| 久久免费国产| 第四色在线视频| 尤物视频一区二区| 一级黄色片在线播放| 亚洲男人第一av网站| av3级在线| 91九色视频在线观看| 久久高清精品| 欧美 激情 在线| 波多野洁衣一区| 澳门黄色一级片| 欧美精品三级在线观看| a天堂在线资源| 日韩美女毛茸茸| 日韩福利视频一区| 精品国产一区二区三区无码|