Questions tagged «temp-tables»

临时表是RDBMS的一项功能,可以存储中间结果。一些RDBMS区分本地和全局临时表。当会话在本地结束时,或者在不再为全局引用临时表时,通常会删除临时表。请注意,即使临时表本质上都是临时的,但它们与表变量并不相同。

14
在创建临时表之前检查临时表是否存在,并删除是否存在
我正在使用以下代码检查临时表是否存在,并在重新创建之前删除该表是否存在。只要我不更改列,它就可以正常工作。如果以后再添加一列,则会显示“无效列”错误。请让我知道我在做什么错。 IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results CREATE TABLE #Results ( Company CHAR(3), StepId TINYINT, FieldId TINYINT, ) select company, stepid, fieldid from #Results --Works fine to this point IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results CREATE TABLE #Results ( Company CHAR(3), StepId TINYINT, FieldId TINYINT, NewColumn …



6
什么时候应该在SQL Server中使用表变量与临时表?
我正在表变量中学习更多详细信息。它说临时表始终在磁盘上,而表变量在内存中,也就是说,表变量的性能优于临时表,因为表变量使用的IO操作少于临时表。 但是有时,如果表变量中的记录太多而无法包含在内存中,则该表变量将像temp表一样放在磁盘上。 但是我不知道“太多记录”是什么。100,000条记录?或1000,000条记录?我怎么知道我正在使用的表变量是在内存中还是在磁盘上?SQL Server 2005中是否有任何功能或工具可以测量表变量的规模,或者何时将表变量从内存放入磁盘时通知我?

12
将数据插入临时表
创建了临时表并声明数据类型后,就这样; CREATE TABLE #TempTable( ID int, Date datetime, Name char(20)) 然后,如何插入数据库中物理表上已经保存的相关数据?


11
SQL Server:是否可以同时插入两个表?
我的数据库包含三个表叫Object_Table,Data_Table和Link_Table。链接表仅包含两列,即对象记录的标识和数据记录的标识。 我想从DATA_TABLE链接到一个给定对象标识的位置复制数据,Data_Table并Link_Table在不同的给定对象标识中插入相应的记录。 我可以通过选择一个表变量并为每次迭代进行两次插入来循环执行此操作。 这是最好的方法吗? 编辑:我想避免循环的原因有两个,第一个是我很懒,并且循环/临时表需要更多的代码,更多的代码意味着更多的地方出错了,第二个原因是对性能的关注。 我可以在一个插入中复制所有数据,但是如何获得链接表以链接到新数据记录,其中每个记录都有一个新ID?


23
如何在MySQL中模拟数组变量?
它似乎是MySQL没有数组变量。我应该怎么用呢? 似乎有两种选择建议:set-type标量表和临时表。我链接的问题暗示了前者。但是,使用这些变量而不是数组变量是一种好习惯吗?或者,如果我使用集合,那么基于集合的成语等效于foreach什么?


8
解决MySQL“无法重新打开表”错误
我目前正在忙于实现一种过滤器,我需要为每个要过滤的“标签”生成一个INNER JOIN子句。 问题是经过一堆SQL之后,我有了一个表,其中包含进行选择所需的所有信息,但是对于每个生成的INNER JOIN,我都需要再次使用它 基本上看起来像这样: SELECT * FROM search INNER JOIN search f1 ON f1.baseID = search.baseID AND f1.condition = condition1 INNER JOIN search f2 ON f2.baseID = search.baseID AND f2.condition = condition2 ... INNER JOIN search fN ON fN.baseID = search.baseID AND fN.condition = conditionN 这可行,但是我更希望“搜索”表是临时的(如果不是普通表,它可以小几个数量级),但这给了我一个非常烦人的错误: Can't reopen table …

3
在MySQL中使用选择索引创建临时表
我有一个使用临时表的存储函数。出于性能原因,我需要在该表中创建一个索引。不幸的是,我无法使用,ALTER TABLE因为这会导致隐式提交。 所以我在寻找的语法来添加INDEX对tempid创建过程中。谁能帮忙? CREATE TEMPORARY TABLE tmpLivecheck ( tmpid INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ) SELECT * FROM tblLivecheck_copy WHERE tblLivecheck_copy.devId = did;
82 mysql  ddl  temp-tables 

2
PostgreSQL临时表
我需要执行250万次查询。该查询生成我需要的一些行,AVG(column)然后使用它AVG从低于平均值的所有值中过滤表。然后,我需要将INSERT这些过滤后的结果放入表格中。 做到这一点的唯一有效方法似乎是通过TEMPORARY TABLE为每个query-postmaster python-thread创建一个。我只是希望这些TEMPORARY TABLEs不会持久保存在硬盘驱动器上,并且会保留在内存(RAM)中,除非它们的内存不足。 我想知道是否TEMPORARY TABLE会引起磁盘写操作(这会干扰INSERTS,即使整个过程变慢)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.