問題タブ [derived-table]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 大きな IN() 句または派生テーブルの結合を使用した MySQL クエリの最適化
ある企業の関係者に問い合わせる必要があるとしましょう。行われたすべてのトランザクションに関するデータを含む「トランザクション」テーブルがあります。
アソシエイトについてこのテーブルをクエリするのはかなり簡単ですが、ひねりがあります。トランザクション レコードは従業員ごとに 1 回登録されるため、注文ごとに 1 つの企業に対して複数のレコードが存在する場合があります。
たとえば、企業 1 の従業員 A と B の両方が企業 2 への掃除機の販売に関与していた場合、"transactions" テーブルには 2 つのレコードが存在します。従業員ごとに 1 つ、企業 1 には両方。ただし、これは結果に影響を与えてはなりません。企業 1 からの取引は、関与した従業員の数に関係なく、1 つとして扱われなければなりません。
簡単だと思いました。次のように、派生テーブルで結合を作成します。
クエリは、企業 1 との取引に関与した企業のリストを返します。これはまさに私が必要としているものですが、MySQL は、corporationID インデックスを使用して派生テーブルを決定できないため、非常に遅くなります。これは、MySQL のすべてのサブクエリ/派生テーブルに当てはまることを理解しています。
また、orderID のコレクションを個別にクエリし、途方もなく大きな IN() 句 (通常は 100 000 以上の ID) を使用しようとしましたが、MySQL には、途方もなく大きな IN() 句でインデックスを使用する際にも問題があることが判明しました。その結果、クエリ時間は改善されません。
他に利用可能なオプションはありますか、それとも両方とも使い果たしましたか?
sql-server - SQL Server:WITH句を含む派生テーブルに結合しますか?
WITH句を含むサブクエリ/派生テーブルに参加したい(WITH句はフィルタリングに必要ROW_NUMBER() = 1
です)。Teradataでは、同様の機能が正常に機能しますが、TeradataはQUALIFY ROW_NUMBER() = 1
WITH句の代わりに使用します。
これがこの参加の私の試みです:
私は何が間違っているのですか?
sql - 派生テーブルを使用することが適切でないのはいつですか?
このSOの投稿では、派生テーブルと一時テーブルに関するパフォーマンスの利点について詳しく説明しています。
パフォーマンス以外に、派生テーブルが適切でない状況が存在します。
例を含む投稿ごとに1つの回答が役立ちます。
sql - すべてのビューを結合できません
Oracle RDMS は、set 演算子を含むビューをマージできないことを知っています。それはなぜなのか知りたいです。
たとえば、次のようになります。
これに変換できます:
これら 2 つのクエリは同等ですよね? [編集]
sql - UNION QUERYを使用して選択する
次のクエリを使用して、SQL Server に新しいテーブルを作成したいと考えています。このクエリが機能しない理由がわかりません。
クエリ 1: 作品
クエリ 2: 機能しません。エラー:Msg 170, Level 15, State 1, Line 7
Line 7: Incorrect syntax near ')'.
ありがとう!
sql - 派生テーブルを使用してこのSQLを単一のステートメントとして表現する方法を説明してください
私自身の啓蒙のために、一時テーブルを使用せずに、このSQL機能を単一のステートメントで記述しようとしています。私の人生では、MySQLを取得せずにクエリを機能させることはできません。「エラー1248(42000):すべての派生テーブルには独自のエイリアスが必要です。」
これは、壊れているとはいえ、私が欲しいものに似たものです:
これは、一時テーブルを使用して表現しようとしているものの作業バージョンです。
助けてくれてありがとう。
sql-server-2008 - 派生テーブルに対する FULLTEXT 操作
私の SQL Server 2008 RC2 データベースには、列 FT で定義されたフルテキスト インデックスを持つテーブル T があります。列 FT を含むテーブルを派生させようとしています。次に、次のように全文操作を使用して、この派生テーブルから選択します。
しかし、これによりエラーメッセージが表示されます:
列 'ft_alias' で CONTAINS または FREETEXT 述語を使用することはできません。この列は全文索引付けされていないためです。
とんでもない!オプティマイザーは、この列が全文索引付けされていることを認識できませんか? 標準インデックスを持つ列のインデックスを使用でき、使用するため、これは驚くべきことです。
この単純なケースでは、派生テーブルを使用せずにクエリを書き直すことができますが、アプリケーションはユーザー クエリから任意に複雑な SQL を生成しており、派生テーブルを使用すると、正しい SQL を生成するのがはるかに簡単になります。
これを回避する方法は本当にありませんか?
sql - SQLの派生テーブルのパフォーマンスの問題
MySQLで派生テーブルを使用するのに問題があります。派生テーブルを使用すると、本質的にクエリの処理が遅くなりますか?
これが私が実行しようとしているクエリです。実行されず、タイムアウトするだけです。
それは成功します。本当に、私は最後の参加まで問題を切り分けました。最後の参加を削除すると、正常に機能します。しかし、最後の結合を追加すると、実行が拒否されます。
mysql - 結合での副選択-問題
私はステートメントに少し問題があります:
...エラーメッセージなしで動作します。...しかし、私の結果では、colとしてModell_nr、ProductID、modfarb_id1のみを取得します。結果にcount_modlieffarbe_vlが表示されないのはなぜですか?
mysql - ネストされたクエリから派生したテーブルを参照するMysql
昨日、これに似たものを投稿しましたが、今は私のクエリとは少し違うものをお願いします-
データベースにクエリを実行して、時間の経過とともに Web サイトにアクセスしたワンタイム ユーザーの数を取得しようとしています。データは次のようになります。
クエリの結果をこのようにしたい
結果は 2,1,0,1,2 です。これは、これらの日の終わりに、1 回訪問したユーザーが X 人いるためです。たとえば、5 日目の終わりに、ユーザー c と d はそれぞれ 1 回しかアクセスしていません。
次のようなクエリを探していると思います。
上記のクエリと私が探しているものとの違いは、この新しいクエリでは、各期間に 1 回限りのユーザーのみを考慮し、繰り返しユーザーを考慮したくないということです。
ありがとう