两张各有500W数据的A和B,作关联查询,很慢怎么优化?

问题描述

两张各有500W数据的A和B,作关联查询,很慢怎么优化?

两张各有500W数据的A和B,作关联查询,A和B的关联字段以及A、B的筛选字段都分别作了索引。但是现在查询还是很慢,需要40多秒,单独查询A或者B表都很快,问怎么优化?

解决方案

EXPLAIN下看看,看看索引是否有用上

解决方案二:

不一定有索引就有作用,如果你的查询有问题,或者你建立的索引不合适,可能引起失效,导致全表扫描

http://blog.163.com/liuxiao0533@126/blog/static/933054132010526844516/?latestBlog

解决方案三:

查询时只返回需要使用的字段,不要使用*

解决方案四:

关联的表能不能设置过滤条件来优化查询。

时间: 2024-11-16 19:50:56

两张各有500W数据的A和B,作关联查询,很慢怎么优化?的相关文章

数据库中两张表之间的数据同步增加、删除与更新实现思路_MsSql

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加: 如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. 复制代码 代码如下: CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END

MySQL实现两张表数据的同步方法总结

有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录.两张表的结构不同,需要将其中几个字段对应起来.可以用下面的触发器实现. 表A的触发器: begin set @disable=1; if @disable=1 and NOT EXISTS(SELECT 1 FROM tableB where ID=new.ID) then   insert into tableB (ID,对应字段1) values(new.ID,new.对应字

数据-蜘蛛纸牌对于点数相邻的两张牌,你可以将点数小的牌移动到点数大的上面,显示可行的操作。

问题描述 蜘蛛纸牌对于点数相邻的两张牌,你可以将点数小的牌移动到点数大的上面,显示可行的操作. 输入数据有多组,每组10个整数,代表最上面那张牌的分值,每个整数取值是1~13,分别对应A.2.3.4.5.6.7.8.9.10.J.Q.K这些牌面分值. 对于每组数据均输出一行,如果还有可行的操作,请输出YES,否则输出NO. 解决方案 Q/K/J/5/8/7/3/9/6/2/1/4

listview-将两张表的数据展示在一个ListView中

问题描述 将两张表的数据展示在一个ListView中 数据库中的数据如图所示,一共有5张表,三个数据表以及两个关系表.我现在需要将所有的project和exam读取出来然后将其中的name和description显示在同一个ListView中,根据数据表中的session sort no来排序. 现在的问题: 1.如何同时读取所有的exam和project数据并根据session sort no来排序呢?因为数据比较多,所以应该不会一次性完成读取,而是用类似SimpleCursorAdapter

用c#把数据提交到相关联的两张access数据表中

问题描述 用c#把数据提交到相关联的两张access数据表中 现在要把姓名.密码.学号.性别添加到数据库表中,现在有两个表:账号表和信息表,要把姓名.密码添加到账号表,把姓名学号性别添加到信息表,两张表有建立关系,账号表中的姓名是主键,用c#语言怎么把文本框中的信息添加到两张表中,求大神帮帮忙,最好有代码看看,谢谢了protected void Button1_Click(object sender, EventArgs e) { string TID = TextBox1.Text.ToStr

更新表-sql 如何在建立一个存储过程时更新两张表的数据?

问题描述 sql 如何在建立一个存储过程时更新两张表的数据? create proc proc2 ( @OrderID int, @BookID varchar(20),--更新 orderInfo quantity:更新 orderSheet payment @BookStock int ) as update orderSheet set payment = b.newpay FROM orderInfo,orderSheet,(select (payment + price * @Book

怎嘛快速比较两张表的数据差

问题描述 现在有A和B两张表,A表字段:a1b1c1d1B表字段:a1c1假如说A表有1000条数据B表有800条数据其中A表a1和c1和B表中a1和c1字段值相同的数据有500条怎嘛用sql查出来A表a1和c1和B表中a1和c1值不同的数据 解决方案 解决方案二:select*fromAwherea1notin(selecta1fromB)andc1notin(selectc1fromB)解决方案三:notexists判断.解决方案四:select*fromAjoinBonA.a1<>B.a

不同结构的表数据新增-SQL 不同表结构的两张表A和B,往表中新增表B的数据,判断条件如果表A中不存在B中的记录

问题描述 SQL 不同表结构的两张表A和B,往表中新增表B的数据,判断条件如果表A中不存在B中的记录 insert into A(no,name,status)values ( select no,name,'Add' from B where B.no not in (select no from A) ) A(no,name,status) B(no,name) no是主键,上面这么写报错,请问要怎么改 ? 解决方案 insert into A(no,name,status) select

sql-求问大神SQL,如何关联两张表后,将第二张表的数据插入第一张表数据第一行后面(详细内容在图片中)

问题描述 求问大神SQL,如何关联两张表后,将第二张表的数据插入第一张表数据第一行后面(详细内容在图片中) 刚注册,无法悬赏,求答案啊~~~~(>_<)~~~~ 解决方案 以前写的SQLServer和Oracle两张表一一对应的SQLhttp://blog.csdn.net/danielinbiti/article/details/43231879 解决方案二: insert into 表1(订单编号,SKU)select 订单编号,订单退款 from 表2