在SQL中使用临时表是不好的做法?

时间:2011-03-18 19:34:33

标签: sql

即,使用具有一些初始唯一数据的临时表,然后一次填充一个或多个字段。有时它会使代码看起来更具可读性,但它也会导致程序类型的思考。它也比使用派生表或其他方法慢。在工业中是否气馁?

1 个答案:

答案 0 :(得分:14)

如果所有基于集合的操作都是a)实施并且b)在所有引擎中有效,那将是一种不好的做法。

但是,对于某些任务(如在LAG中模拟LEADSQL Server,级联自动生成的id上的长插入链是几个表等),临时表或表变量是一个很好的解决方案。

您应该注意,引擎本身经常创建和删除临时表,以用于using temporaryMySQLspool中的SQL Server等操作。

因此,每次创建临时表时,都应该问自己一个问题:

  • 我是否创建临时表,因为我不知道基于集合的方式,或者因为我知道基于集合的方式,但服务器(或优化器)不知道?

如果答案是“我知道但优化器没有”,则创建表格。如果可能,优化器也会这样做。