![743cfe72f2a2d569edf20c3f0558de8d.png](https://i-blog.csdnimg.cn/blog_migrate/1575bd45ba4788e675a4347f25fea015.jpeg)
看完这章你会学习到以下内容:
1. 将两个大表写进来两张临时表(创建临时表 - 会话与实务)
2. 循环查询更快的速度
某些情况下需要 多个非常大的表关联的情况下, 但是需要检索的, 是少量的数据的时候.可以先把大表数据,检索出那一小部分, 然后插入到临时表中, 最后再关联处理.
例如:
某百货公司的数据库.
里面有下面这2张 没有分区的表
销售表: 销售日期, 销售流水号, 销售金额
销售明细表: 销售流水号, 销售物品, 销售数量
当上面的表里面,包含几年的数据以后。假如你要查询 昨天的销售合计。 很简单
SELECT * FROM 销售表 WHERE 销售日期 = 昨天。但是当你要查询 昨天的销售的, 某种商品的 销售情况的时候。 就要
SELECT......FROM销售表
JOIN 销售明细表 ON (销售表.销售流水号 = 销售明细表.销售流水号)
WHERE 销售表.销售日期 = 昨天
AND 销售明细表.销售物品 =某物品
这种情况下,由于2个大表关联,查询时间非常的长,可以通过临时表。
先INSERT INTO 临时表1,SELECT * FROM 销售表 WHERE 销售日期 = 昨天。
然后再INSERT INTO 临时表2。SELECT * FROM 销售明细表 WHERE 销售流水号 IN (SELECT 销售流水号 FROM 临时表1)
最后方法:
SELECT
......
FROM
临时表1 JOIN 临时表2
ON (临时表1.销售流水号 = 临时表2.销售流水号)这样就是 2个小表关联处理,查询起来,速度快一些。
文章来源:
oracle中临时表是用来做什么的_百度知道
MySQL 两张千万级数据表联查如何优化?