我用的是mysql,我有两个表,在proc运行期间我对它们进行了多次选择,每个表都有超过1亿条记录,为了加速proc,我想把它作为temp表(包含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多分钟,如何加速呢?
1条答案
按热度按时间2q5ifsrm1#
对于此查询:
你可能需要一个索引
client_transactions_final(id, tm_id, fin_amount, m_id)
. 这是一个查询的覆盖索引,因此应该可以提高性能。我不认为您真的需要创建这个临时表。如果索引正确,join通常会非常快。当您有聚合和更复杂的查询时,临时表更有意义。我并不是说它行不通,只是说这不是我想到的第一个解决方案。