Questions tagged «derived-tables»

4
是否真的有可能无法保证针对此特定的冗余派生表的顺序?
在与Lukas Eder的Twitter交谈中,我偶然发现了这个问题。 尽管正确的行为是将ORDER BY子句应用于最外层查询,因为在这里,我们没有在最外层查询中使用DISTINCT,GROUP BY,JOIN或任何其他WHERE子句,因此RDBMS为什么不通过传入的数据是否由内部查询排序? SELECT * FROM ( SELECT * FROM table ORDER BY time DESC ) AS t 至少在PostgreSQL上运行此示例时,对于内部查询和此派生表示例,您将获得相同的执行计划,以及相同的结果集。 因此,我认为规划器将只丢弃最外面的查询,因为它是多余的,或者只是传递内部表的结果。 有人认为情况可能并非如此吗?

5
内联视图和WITH子句之间的区别?
内联视图使您可以从子查询中进行选择,就好像它是另一个表一样: SELECT * FROM /* Selecting from a query instead of table */ ( SELECT c1 FROM t1 WHERE c1 > 0 ) a WHERE a.c1 < 50; 我已经看到了使用不同术语来指代的内容:内联视图,WITH子句,CTE和派生表。在我看来,对于同一件事,它们是不同的供应商特定语法。 这是一个错误的假设吗?两者之间在技术/性能上有什么区别吗?

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 …
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.