我正在使用Mysql,我有两个表,我在proc运行期间对其进行多次选择,每个表都有超过1亿条记录,为了加速proc,我想做这个连接,将其作为临时表(包含65+ 百万条记录),稍后在程序中使用此表。创建它。我在用 。下一个 。
create temporary table T_join (INDEX(tm_id))
SELECT
t1.id,
t2.tm_id,
t1.code,
t1.bincode,
t1.AU,
t1.TA,
t2.fin_amount,
t2.m_id
FROM
pm_customers t1
INNER JOIN
client_transactions_final t2 ON t1.id = t2.id
一切都直接了,唯一的问题是创建这个临时表过程花费了20多分钟,如何加快速度?
最佳答案
对于此查询:
SELECT c.id, ct.tm_id, c.code, t1.bincode, c.AU, c.TA,
ct.fin_amount, ct.m_id
FROM pm_customers c INNER JOIN
client_transactions_final ct
ON c.id = ct.id;
您可能需要 client_transactions_final(id, tm_id, fin_amount, m_id)
上的索引。这是查询的覆盖索引,因此这应该会提高性能。
我不相信您真的需要创建这个临时表。有了正确的索引,连接通常会非常快。当您有聚合和更复杂的查询时,临时表更有意义。我并不是说它不起作用,只是这不是我想到的第一个解决方案。
关于mysql - 从包含+ 6500万条记录的Mysql连接创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51275609/