タグ付けされた質問 「derived-tables」

4
この特定の冗長な派生テーブルの順序が保証されない可能性は本当にありますか?
ルーカスエダーとの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開発者は2番目のテーブルを好みます。どうして?大量のデータ(数百万のレコード)でクエリを実行する必要があり、最良の選択を使用していることを確認したい。 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 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.