千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:武汉千锋IT培训  >  技术干货  >  mysql中in大量数据导致查询速度慢怎么优化?

mysql中in大量数据导致查询速度慢怎么优化?

来源:千锋教育
发布人:xqq
时间: 2023-10-15 05:27:23

一、mysql中in大量数据导致查询速度慢怎么优化

拆分sql语句

mysql中in大量数据导致查询速度慢,优化的名列前茅种方案是拆分sql子查询,将一条sql拆为两条sql,将in内部的sql拆分出来,取出isbn集合列表,然后利用mybatis的sql拼接的功能,拼成完整的sql语句。

Xml代码如下所示,名列前茅步首先利用时间参数分页取出isbn列表

第二步先在服务层中判断上一轮取出的isbn列表是否为空,如果不为空继续向下执行,如果isbn集合列表不为空,继续利用mybatis提供的xml动态标签功能,拼接出in查询条件

联结代替子查询

这种方案原理还是避免子查询,将子查询语句改写为联结查询,改写后的sql语句如下所示

SELECT

    t1.isbn,

    code

FROM

    tb_book_main t1

    INNER JOIN

    ( SELECT isbn FROM tb_book_base WHERE publish_time BETWEEN 20190903 AND 20191003 ) t2

on t1.isbn = t2.isbn

AND role= 100

limit 0,10

使用explain查看索引命中情况,mysql按照预期命中了tb_book_base的publish_time和tb_book_main的isbn索引

延伸阅读:

二、什么是Memory引擎

Memory引擎是Mysql的内存引擎,在实现上,Memory存储引擎不同于Innodb这种组织索引结构(索引即是数据,即数据存放在主键索引上),而是将索引和数据分开存储。索引采用Hash的形式,存放主键id和指向数据的指针,而数据则按插入顺序存放。我们称这种数据组织方式为堆组织方式。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

PSC文件是什么文件,要用什么软件打开?

2023-10-15

怎么向VFP数据表中一次加入多条记录?

2023-10-15

access数据库中的round函数是什么意思?

2023-10-15

最新文章NEW

定制开发app有哪些优势?

2023-10-15

删除SQL server2012出现重新启动计算机――失败,是什么原因?

2023-10-15

怎样建立一个数据库,然后利用C语言调用数据库的数据来进行运算得到运算结果?

2023-10-15

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>