关于mysql当中给数据量特别大的两个表做关联查询的时候解决查询速度很慢的解决方法

今天碰到了两个表做关联查询的mysql,这两个表的数据量都是特别大的,有一个表的数据是上亿条的数据,有一个是几百万的数据,

查询的速度是特别慢,然后我看了一下执行计划,下面是执行执行计划:

看到上面这个图这个数据量是特别大的,这个查询起来的肯定是非常慢的,而且他的类型都是ALL类型,也就是都是全表进行扫描的。然后在网上找资料,然后发现我们可以给关联的字段建索引。

于是我给关联字段建立了索引,然后就发生了下面的变化:

整个的行数就成不知道多少个数量级的情况在下降,整个的查询速度也是加快了额很多,现在查出数据只要几十毫秒的速度,真的不敢想象。

具体给数据字段建立所以,以及为啥会发生这样的变化,详细参考下面的的连接:

https://www.cnblogs.com/zedosu/p/6555981.html

从上面的例子可以看出,我们所写的sql当有语句进行优化的时候,查询速度是非常快的。除了给字段建立索引的方式之外,我们还可以通过其他的方式对我们的sql进行优化,来减少查询的时间。

原文地址:https://www.cnblogs.com/gxgd/p/9726497.html

时间: 2024-10-01 07:24:20

关于mysql当中给数据量特别大的两个表做关联查询的时候解决查询速度很慢的解决方法的相关文章

第9条:用生成器表达式来改写数据量较大的列表推导式

核心知识点: (1)当输入的数据量较大时,列表推导可能会因为占用太多内存而出问题. (2)由生成器表达式所返回的迭代器,可以逐次产生输出值,从而避免内存用量问题. (3)把某个生成器表达式所返回的迭代器,放在另一个生成器表达式的for子表达式中,即可将二者结合起来. (4)串在一起的生成器表达式执行速度很快. 列表推导式的缺点是:在推导过程中,对于输入序列中的每个值来说,可能都要创建仅含一项元素的全新列表. 当输入的数据比较少时,不会出任何问题,但如果输入的数据非常多,那么可能会消耗大量内存,并

针对数据量较大的表,需要进行跨库复制,采用navcat 实现sqlite数据库跨数据库的数据表迁移 [转载]

2014年12月13日 14:36 新浪博客 (转自http://www.cnblogs.com/nmj1986/archive/2012/09/17/2688827.html) 需求: 有两个不同的SQLite数据库 A.B,需要将B数据库中的表复制到A数据库中去,数据量较小的时候,可以在数据库可视化工具Navicat中直接将表导成.sql文件,然后将sql文件在另一个数据库运行即可.但是当数据量较大时,这样操作会丢失一部分数据.因此针对这种情况可采用下述方法: 解决办法: (1)使用软件:S

WCF入门(一)--Request Entity Too large 传输的数据量过大

通过WCF进行数据的查询或者添加的时候,如果数据量过大,一般会报出如下的错误: 1.已超过传入消息(65536)的最大消息大小配额.若要增加配额,请使用相应绑定元素上的MaxReceivedMessageSize 属性. 2.远程服务器返回了意外反应(413)Request Entity too large. 3.远程服务器返回了意外反应(400)Bad Request. 具体的解决方案: 服务端返回数据给客户端报错 在客户端的配置文件中,主要修改maxReceivedMessageSize <

MongoDB数据量较大时如何构建索引--减少业务最少影响

在数据量较大或请求量较大,直接建立索引对性能有显著影响时,可以利用复制集(数据量较大时一般为线上环境,使用复制集为必然选择或者使用分片.)中部分机器宕机不影响复制集工作的特性,继而建立索引. 备注:添加索引的表使用WT引擎,数据量有1.5亿左右. 1. 副本集配置参数 节点1: $ more shard1.conf dbpath=/data/users/mgousr01/mongodb/dbdata/shard1_1 logpath=/data/users/mgousr01/mongodb/lo

Web传输,前台的参数数据量过大[json格式的字符串],可能达到几M,ajax调用后台方法时

eb传输,前台的参数数据量过大[json格式的字符串],可能达到几M,ajax调用后台方法时,无法传递问题分析:tomcat上默认post提交大小为2M,左右,超过这个大小了,就会传值不成功解决方法:修改post提交大小的限制大小,在server.xml上修改,如下:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8

Java模拟数据量过大时批量处理数据实现

代码: import java.util.ArrayList; import java.util.List; /** * 模拟批量处理数据 * 当数据量过大过多导致超时等问题可以将数据进行分批处理 * @author [] * */ public class BatchUtil { public static void listBatchUtil(List<Integer> lists) { System.out.println(lists); // 定义批处理的数据数量(即批处理条件) in

sql查询未走索引问题分析之查询数据量过大

前因: 客户咨询,有一个业务sql(代表经常被执行且重要),全表扫描在系统占用资源很高(通过ash报告查询得到信息) 思路: 1.找到sql_text,sql_id 2.查看执行计划 3.查询sql涉及对象的对象数据量,段大小,行数量,where条件列,是否存在索引,列的选择读情况如何 4.总结,优化整改 1.找到sql_text,sql_id 094cmrxrahdy2 SELECT 8~10个列名称(由于设计用户信息,因此部分信息不再详细说明) FROM Prescription WHERE

sql server 大数据, 统计分组查询,数据量比较大计算十分钟内每秒钟执行次数

-- 数据量比较大的情况,统计十分钟内每秒钟执行次数 declare @begintime varchar(100); -- 开始时间 declare @endtime varchar(100); -- 结束时间 declare @num int; -- 结束时间 set @begintime = '2019-08-10 09:10:00' -- 开始时间 set @endtime = '2019-08-10 09:20:00' -- 结束时间 set @num = (select count(

Word 2010打开大文档时速度很慢的解决方法

这两天终于搞清楚了一个困扰了我很久的问题.我的Word 2010在打开很大的Word文档(如小组的硕士学位论文)时,经常发生速度慢甚至很长时间没有响应的问题.在师弟的提示下,终于找到一个折衷的解决方案: 其实是对中英文混合大文档拼写检查的问题,关闭拼写和语法检查就可以了,设置方法:点击"文件"--"选项"--"校对"--取消"在Word中更新拼写和语法时"下的所有对号.就可以顺利打开Word文档了. 另外,我们在英文的时候需要