伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

MySQL Index--NOT IN和不等于两类操作无法走索引?

来源:网络转载 浏览:74次 时间:2022-12-03

经常被问,NOT IN和<>操作就无法走索引?

真想只有一个:具体问题具体分析,没有前提的问题都是耍流氓。

 

准备测试数据:

## 删除测试表
DROP TABLE IF EXISTS tb2001;

## 创建测试表
CREATE TABLE `tb2001` (
    `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `c1` int(11) DEFAULT NULL,
    `c2` int(11) DEFAULT NULL,
    INDEX idx_c1(c1)
) ENGINE = InnoDB CHARSET = utf8;

## 插入测试数据(10万左右)
## 如果information_schema.columns数据较少,可以重复多次
INSERT INTO tb2001 (c1,c2)
SELECT 1,1 from information_schema.columns;

INSERT INTO tb2001 (c1,c2)
SELECT 2,2 from information_schema.columns
limit 10;
INSERT INTO tb2001 (c1,c2)
SELECT 3,3 from information_schema.columns
limit 10;

表中tb2001上C1列上有索引,全表数据10万条,但c1<>1的数据仅为20条。


查询c1不为1的10条数据,NOT IN 方式执行计划为:

desc select * from tb2001 where c1 not in(1) limit 10 \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: tb2001
   partitions: NULL
         type: rangepossible_keys: idx_c1
          key: idx_c1
      key_len: 5
          ref: NULL
         rows: 11
     filtered: 100.00
        Extra: Using index condition


查询c1不为1的10条数据,<>方式执行计划为:

desc select * from tb2001 where c1 <> 1 limit 10 \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: tb2001
   partitions: NULL
         type: rangepossible_keys: idx_c1
          key: idx_c1
      key_len: 5
          ref: NULL
         rows: 11
     filtered: 100.00
        Extra: Using index condition

从上面两个例子可以看出,NOT INT和<>操作都可以走索引,且执行性能极佳。

 

俗话说苍蝇不叮无缝的丹,因为在很多场景下,NOT IN或<>两类操作使用二级索引的成本远超于全表扫描的成本,查询优化器按照成本选择"最优执行计划",导致查询不走二级索引。但不能因此就彻底判断NOT IN或<>两类操作不能走索引。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net