2017-07-24 48 views
0

在日常的cron作业中,我需要在Mysql中创建一个表,执行一些处理并在最后放下它(不再需要此表)。删除在Mysql中创建表与截断表

我的问题是以下两种策略是在CPU使用率和内存占用方面更好:

  1. 在作业开始创建表,并在年底放弃它。
  2. TRUNCATE表在作业结束时(即表格不会被删除,只是在每次作业运行后它会被截断)。

在第一种方法中,必须在每个作业运行中创建一个新表格,而在第二种方法中,即使作业运行后不需要,表格仍保留在Mysql 24 * 7中。

+0

那么空表不会影响性能,因为阅读需要这么短的时间,甚至不值得将其视为开销。我更喜欢选项2 - 只需添加数据并在日期结束时截断:) – ThisGuyHasTwoThumbs

+1

创建/删除的优势在于您无需关心表结构是否更改,因为它始终使用当前需要的任何结构创建。截断是好的,但也需要维护表。 –

回答

2

您可以创建,而不是创建实际的表临时表:

CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1) 
+0

无法使用临时表,因为我正在使用MysqlConnectionPool并执行单个语句我可以获得不同的连接 –

0

在开始使用此查询

Select * into test from Table 

,并在最后截断它,并把它。

Truncate table test 
Or 
Drop table test