Questions tagged «temporary-tables»

临时表对象(而非表变量)的使用,包括语义,设计,性能优化和索引。另请参见[表变量]。

1
SELECT INTO是否在运行时之前在TempDB中保留#Object名称?
汇集了一个快速处理程序以帮助调试,我遇到了编译器中似乎是错误的错误。 create proc spFoo @param bit as begin if @param = 0 begin select * into #bar from [master].dbo.spt_values -- where number between ... end else begin select top 10 * into #bar from [master].dbo.spt_values order by newid(); end; end; 尝试执行上述操作会返回以下错误 消息2714,级别16,状态1,过程spFoo,第19 行在数据库中已经有一个名为“ #bar”的对象。 在人类可读的意义上,该proc似乎很好:select into因为它们被包装在if-else块中,所以仅将执行一条语句。但是,非常好,SQL Server无法确认这些语句在逻辑上相互排斥。也许更令人困惑的是,将drop table #fooif放置在if-else块内时(如果假定它将告诉编译器取消分配对象名),错误仍然存​​在,如下所示。 create …

2
与SQL Server中的派生表相比,使用临时表是否有优势?
我读到派生表比临时表具有更好的性能,但是无论如何,许多SQL Server开发人员都喜欢第二个表。为什么?我必须对大数据(数百万条记录)进行查询,并且我想确保使用的是最佳选择。 CREATE TABLE A( id BIGINT IDENTITY(1,1) NOT NULL, field1 INT NOT NULL, field2 VARCHAR(50) NULL, ); CREATE TABLE B( id INT IDENTITY(1,1) NOT NULL, field1 VARCHAR(10) NULL, field2 INT NULL ); INSERT INTO A (field1,field2) VALUES (1,'a'),(2,'b'),(3,'c'),(2,'d'),(5,'e'), (6,'f'),(7,'g'),(8,'h'),(9,'i'),(2,'j'); INSERT INTO B (field1,field2) VALUES ('a',1),('b',2),('c',3),('d',4),('e',5), ('f',6),('g',7),('h',8),('i',9),('j',2),('k',3); DECLARE @begin INT=0,@end …

2
同时创建许多mysql临时表是否不好?
我需要进行大量的统计分析,才能为用户提供一些数据。目前,我从mysql捕获数据并通过PHP数组处理它们。但是,mysql临时表要好得多(显然比PHP数组更高效和更快;显然是由于它们的机制)。 我的解决方案是在每次导入和处理数据的请求(即连接)上形成一个临时表。但是,我不确定同时创建多个临时表是否有缺点? 这会给mysql服务器造成问题吗?或者我可以在大量同时请求中将其用作PHP数组的替代方法?
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.