从使用临时表开始,是否有更有效的方法从动态表中选择数据?

时间:2014-02-18 06:16:23

标签: sql sql-server tsql temp-tables

我有一个可以包含各种不同类型和字段的表,并且我有一个表定义表,告诉我哪个字段包含哪些数据。我需要从该表中选择一些东西,所以目前我根据表定义表中的内容构建一个动态select语句,并将其全部选择到临时表中,然后从中工作。

我选择的实际数据量非常大,超过500万条记录。我想知道临时表是否真的是最好的办法。

还有其他更有效的选择来做我需要做的事情吗?

2 个答案:

答案 0 :(得分:0)

您可以使用Table Variables来实现此功能。 如果您在多个查询中使用相同的结构,那么您也可以使用自定义Table data types

http://technet.microsoft.com/en-us/library/ms188927.aspx

http://technet.microsoft.com/en-us/library/bb522526(v=sql.105).aspx

答案 1 :(得分:0)

如果您的数据是静态的,那么报告就像 - 缓存大多数热门查询结果一样,最好是在Application Server上。或者做多维建模(立方体)。这是真正“更有效的选择”。

临时表,表变量,表数据类型......在任何情况下,您都将使用tempdb,如果要优化查询,请尝试优化tempdb存储(在检查IO statistics之后)。您可以为临时表创建索引。