MySQL查詢(xún)條件中in會(huì)用到索引嗎
當(dāng)用人問(wèn)你MySQL 查詢(xún)條件中 in 會(huì)不會(huì)用到索引,你該怎么回答?
答案:可能會(huì)用到索引
動(dòng)手來(lái)測(cè)試下
1.創(chuàng)建一張表,給字段port建立索引
CREATE TABLE `pre_request_logs_20180524` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` char(16) NOT NULL COMMENT '代理IP',
`port` int(8) NOT NULL COMMENT '端口號(hào)',
`status` enum('成功','失敗') NOT NULL COMMENT '狀態(tài)',
`create_time` datetime NOT NULL COMMENT '創(chuàng)建時(shí)間',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_port` (`port`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COMMENT='代理IP請(qǐng)求日志';
插入測(cè)試數(shù)據(jù)
INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (1, '192.168.1.199', 53149, '失敗', '2018-05-24 14:55:34', '2018-11-16 10:58:13'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (2, '192.168.1.100', 10653, '成功', '2018-05-24 14:55:54', '2018-11-16 10:58:13'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (3, '192.168.1.112', 50359, '失敗', '2018-05-24 14:56:00', '2018-11-16 10:58:13'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (4, '192.168.1.67', 30426, '失敗', '2018-05-24 14:56:09', '2018-11-16 10:58:13'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (5, '192.168.1.209', 49323, '失敗', '2018-05-24 14:56:12', '2018-11-16 10:58:13'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (6, '192.168.1.209', 51161, '成功', '2018-05-24 14:56:13', '2018-11-16 10:58:13'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (7, '192.168.1.12', 54167, '成功', '2018-05-24 14:56:16', '2018-11-16 10:58:13'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (8, '192.168.1.64', 20462, '成功', '2018-05-24 14:56:19', '2018-11-16 10:58:13'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (9, '192.168.1.53', 22823, '失敗', '2018-05-24 14:56:31', '2018-11-16 10:58:13'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (10, '192.168.1.85', 48229, '成功', '2018-05-24 14:56:32', '2018-11-16 11:01:11'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (11, '192.168.1.85', 48229, '成功', '2018-05-24 14:56:32', '2018-11-16 11:01:15'); INSERT INTO ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (12, '192.168.1.85', 48229, '成功', '2018-05-24 14:56:32', '2018-11-16 13:34:37');
2.測(cè)試sql
explain select * from pre_request_logs_20180524 where port in (51161,20462,48229);
執(zhí)行結(jié)果

從結(jié)果來(lái)看是沒(méi)有用到索引,但不要著急下結(jié)論,再看二個(gè)sql
select * from pre_request_logs_20180524 where port in (51161,48229); select * from pre_request_logs_20180524 where port in (51161,20462);
執(zhí)行結(jié)果分別如下


可以看到第二條sql是用到了索引,二條sql的區(qū)別在于port值不一樣,一個(gè)包含48229,一個(gè)包含20462
其實(shí)MySQL優(yōu)化器會(huì)自動(dòng)判斷in是否走二級(jí)索引,也就是port字段的索引
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
為什么MySQL 刪除表數(shù)據(jù) 磁盤(pán)空間還一直被占用
這篇文章主要討論為什么MySQL 刪除表數(shù)據(jù) 磁盤(pán)空間還一直被占用,項(xiàng)目中使用Mysql作為數(shù)據(jù)庫(kù),對(duì)于表來(lái)說(shuō),一般為表結(jié)構(gòu)和表數(shù)據(jù)。表結(jié)構(gòu)占用空間都是比較小的,一般都是表數(shù)據(jù)占用的空間。接下來(lái)小編就和大家一起進(jìn)入下面文章內(nèi)容的學(xué)習(xí)2021-10-10
探究MySQL中索引和提交頻率對(duì)InnoDB表寫(xiě)入速度的影響
這篇文章主要介紹了MySQL中索引和提交頻率對(duì)InnoDB表寫(xiě)入速度的影響,作者通過(guò)實(shí)際測(cè)試運(yùn)行時(shí)間的對(duì)比來(lái)驗(yàn)證,需要的朋友可以參考下2015-05-05
MySQL中order by在子查詢(xún)中失效的問(wèn)題解決方案
這篇文章主要介紹了MySQL中order by在子查詢(xún)中失效的問(wèn)題解決,文中補(bǔ)充介紹了Mysql 5.7版本導(dǎo)致的子查詢(xún)order by排序無(wú)效問(wèn)題的探究,需要的朋友可以參考下2023-07-07
詳解遠(yuǎn)程連接Mysql數(shù)據(jù)庫(kù)的問(wèn)題(ERROR 2003 (HY000))
本篇文章是對(duì)遠(yuǎn)程連接Mysql數(shù)據(jù)庫(kù)的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
MySQL存儲(chǔ)過(guò)程之流程控制while,repeat,loop循環(huán)
這篇文章主要介紹了MySQL存儲(chǔ)過(guò)程之流程控制while,repeat,loop循環(huán),循環(huán)中的代碼會(huì)運(yùn)行特定的次數(shù),或者是運(yùn)行到特定條件成立時(shí)結(jié)束循環(huán)2022-07-07
MySQL按小時(shí)查詢(xún)數(shù)據(jù),沒(méi)有的補(bǔ)0
這篇文章主要介紹了MySQL按小時(shí)查詢(xún)數(shù)據(jù),沒(méi)有的補(bǔ)0,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

