暂无图片
mysql表关联问题
我来答
分享
紫气东来
2020-07-30
mysql表关联问题

SQL语句:
SELECT
a.bill_id,
a.goods_id,
sum( a.col1) ,
sum( a.col2 ),
sum( a.col3 ),
sum( b.col1 ),
sum( b.col2 )
FROM
a LEFT JOIN b ON a.detail_id = b.id
WHERE
a.delete_flag = 0
AND a.tena_id = ‘xxxxxxxx’
AND a.bill_id IN (1000个左右)
GROUP BY
a.bill_id,
a.goods_id;

表信息:
a表370W数据,存在联合索引(tena_id,delete_flag,bill_id,goods_id)
b表270W数据,id是主键
SQL查询结果5000-10000条左右

上面SQL第一次执行总是很慢,30S左右,后面再执行就很快不到1s。
查看profile发现时间都耗在sending data上,如下是具体信息,请教下各位这是什么原因
image.png

image.png

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
张sir

第一次把数据加载到buffer pool 了,以后执行就快了,sending data是收集和发送数据,

暂无图片 评论
暂无图片 有用 0
紫气东来

但是我这个查询的结果集也不大,最多1W行,关联和过滤都用到了索引,但是读取的block却很大,会和关联字段的类型有关系吗? a.detail_id = b.id 都是char(32)类型的

暂无图片 评论
暂无图片 有用 0
张sir

optimize一下表,是不是碎片太多了?查一下表的大小和表文件大小是不是差别比较大?

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏