問題タブ [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.
sql - SQLステートメントのなじみのない文字
これは一種のSQL初心者の質問だと思いますが、ここで説明します。
ユーザー定義関数の例に基づいてまとめたSQLクエリ(SQL Server 2005)があります。
UDFはうまく機能します(それが重要な場合は、関連するテーブルの複数の行からのデータを連結します)が、FROM句の後の「i」について混乱しています。クエリはiで正常に機能しますが、iがないと失敗します。「i」の意味は何ですか?
編集:ジョエルが以下に述べたように、それはキーワードではありません
tsql - T-SQLで変数の割り当てとデータ取得操作を組み合わせる方法
明確にするために、私はSybase 12.5.3を実行していますが、これはSQLServer2005にも当てはまると思います。基本的に、私はこのようなクエリを作成しようとしています。問題を強調するために、可能な限り単純化しました。
このクエリにより、次のエラーが発生します。「エラー:141変数に値を割り当てるSELECTステートメントは、データ取得操作と組み合わせてはなりません。」
これまでに私が得た唯一の回避策は、派生テーブルのデータを一時テーブルに挿入してから、もう一度選択することです。これは問題なく機能しますが、これが機能しないという事実は私を苛立たせます。これを行うためのより良い方法はありますか?
sql-server-2005 - SQL Server のパフォーマンス: 派生テーブルと共通テーブル式 (CTE)
派生テーブルよりも CTE を使用すると、パフォーマンスが向上しますか?
mysql - mysql SELECT AS のインデックスまたはビューの使用
私は大きな mysql クエリ (mysql 5.0) で頭がいっぱいです。誰かが助けてくれることを願っています。
前に、結合されたクエリから個別の値を取得する方法を尋ねました mysql は、結合されたクエリの個別の値に対してのみカウントします
私が得た応答(join asでサブクエリを使用)
残念なことに、私のクエリはより手に負えなくなりました。クエリを実行しても、派生クエリで使用できるインデックスがないため、派生テーブルへの結合に時間がかかりすぎます。
私のクエリは次のようになります
ふぅ!
SO、ご覧のとおり、私の問題を正しく理解していれば、インデックスのない派生テーブルが 2 つあります (そして、何らかの形で Join ステートメントを台無しにした可能性があることは否定しませんが、さまざまなタイプをいじり続けましたが、これで終わりですか?私が望んでいた結果を私に与えてください)。
インデックスを利用できるようにする、これに似たクエリを作成する最良の方法は何ですか? あえて言いますが、実際には、後日ミックスに追加するテーブルがもう 1 つあります。
現在、私のクエリは完了するまでに 0.8 秒かかりますが、インデックスを利用できれば、これはかなり高速になると確信しています。
sql - アクセスにおけるSQLヘルプ–データの欠如を探す
親テーブルにあるすべてのレコードで、子テーブルに特定のレコードがないものを見つけるための最速の方法を見つけようとしています。たとえば、クエリで、男性の子供がいない、または子供がまったくいないすべての家族レコードを返すようにします。
例1
これは痛々しいほど遅いです:
SELECT * FROM Families
WHERE Families.FamilyID NOT IN(SELECT FamilyID FROM Children WHERE Children.Gender = "m")
例2
これはより高速です:
SELECT * FROM Families
WHERE NOT EXISTS(SELECT * FROM Children WHERE Children.Gender = "m" AND Children.FamilyID = Families.FamilyID)
例3
これは最速ですが、ドキュメントが見つからないため、投資するのが心配です。私はそれが何と呼ばれているのかさえ知りません。より良い用語を求めて、私たちはそれを「匿名クエリ」と呼んでいます。
SELECT*FROMファミリ
LEFTJOIN
[SELECT*FROM子WHEREGender="m"]。AS AliasChildren ON Families.FamilyID = AliasChildren.FamilyID
WHERE AliasChildren.FamilyID IS NULL
だから私の質問はこれです:
- 例3でこれは何と呼ばれていますか?
- 将来サポートされるのはAccessの「主流」機能ですか?
- それに関するドキュメントはどこにありますか(それが何と呼ばれているのかがわかれば、これはもっと簡単かもしれません)?
ありがとう!
sql - SQLクエリを作成して、最新のレコードを取得します
プロジェクトチームのステータスボードモジュールを作成しています。ステータスボードを使用すると、ユーザーはステータスをインまたはアウトに設定でき、メモを提供することもできます。私はすべての情報を単一のテーブルに保存することを計画していました...そしてデータの例は次のとおりです。
データをクエリして、各ユーザーの最新のステータスを返したいのですが、この場合、クエリは次の結果を返します。
これを実現するためにTRANSACT-SQLを理解しようとしていますか?どんな助けでもいただければ幸いです。
sql - JOINedの同等のものよりも優れたパフォーマンスを発揮する派生テーブルクエリをさらに最適化するにはどうすればよいですか?
更新:私は解決策を見つけました。以下の私の答えを参照してください。
私の質問
このクエリを最適化してダウンタイムを最小限に抑えるにはどうすればよいですか?チケットの数が100,000から200万の範囲で、50を超えるスキーマを更新する必要があります。ticket_extraのすべてのフィールドを同時に設定することをお勧めしますか?私はここに私が見ていなかった解決策があると感じています。私はこの問題に1日以上頭をぶつけてきました。
また、最初はサブSELECTを使用せずに試しましたが、現在のパフォーマンスよりもはるかにパフォーマンスが低下しました。
バックグラウンド
実行する必要のあるレポート用にデータベースを最適化しようとしています。集計する必要のあるフィールドは計算に非常にコストがかかるため、このレポートに対応するために既存のスキーマを少し非正規化しています。数十の無関係な列を削除することで、チケットテーブルをかなり単純化したことに注意してください。
私のレポートは、作成時のマネージャーと解決時のマネージャーごとにチケット数を集計します。この複雑な関係をここに示します。
(出典:mosso.com)
このオンザフライで計算するために必要な半ダースの厄介な結合を回避するために、次のテーブルをスキーマに追加しました。
現在の問題は、このデータをどこにも保存していないことです。マネージャーは常に動的に計算されました。同じスキーマを持つ複数のデータベースに数百万のチケットがあり、このテーブルにデータを入力する必要があります。できるだけ効率的な方法でこれを実行したいのですが、使用しているクエリを最適化できませんでした。
このクエリは、170万を超えるチケットを持つスキーマで実行するのに1時間以上かかります。これは、私が持っているメンテナンスウィンドウには受け入れられません。また、manager_resolvedフィールドの計算も処理しません。これを同じクエリに結合しようとすると、クエリ時間が成層圏にプッシュされるためです。私の現在の傾向は、それらを分離し、UPDATEを使用してmanager_resolvedフィールドに入力することですが、よくわかりません。
最後に、そのクエリのSELECT部分のEXPLAIN出力を次に示します。
読んでくれてありがとう!
mysql - インデックスと「派生」クエリの高速化
最近、私が持っているクエリの実行速度が非常に遅く、クエリごとにほぼ1秒であることに気付きました。
クエリは次のようになります
そして説明は
latlongで「forceindex」を使用してみましたが、まったく高速化されていないようです。
応答が遅くなる原因は派生テーブルですか?もしそうなら、これのパフォーマンスを改善する方法はありますか?
--------編集-------------私はそれをより読みやすくするためにフォーマットを改善しようとしました
'WHEREステートメントのみを変更して同じクエリを実行します
そのクエリは0.006秒で実行されます
説明は次のようになります
sql - 「インラインビュー」を関連付けることができればいいのに
私は患者テーブルを持っています:
私はPatientMeasurementテーブルを持っています(0から多数):
次のような結果セットを作成しようとしています。
基本的に、測定 A の値が少なくとも 1 つ、測定 B の値が 1 つある場合、患者の分子は 1 になります。この例では、患者 1 には 3 つの A 測定値と 2 つの B 測定値があるため、分子は 1 です。 2 には 2 つの A 測定値がありますが、B 測定値がないため、分子は 0 です。患者には A 測定値も B 測定値もないため、分子は 0 です。
これまでの私のクエリは次のとおりです。
これは、相関する日付制限 (Recorded < dateadd(hh, 12, Admitted) を含めない限り、期待どおりに機能します。残念ながら、この方法で「インライン ビュー」を相関させることは、構文的に有効ではありません。
これにより、SQLを次のように書き直す必要がありました。
私の質問:これを行うためのより良い、より効率的な方法はありますか?
御時間ありがとうございます。
nhibernate - NHibernate + 派生テーブルへの結合
従業員ごとに複数の行を格納するテーブルで、各従業員の最新のエントリを表す従業員ごとに 1 つの行を取得したいと考えています。これが私が手書きのSQLを使用している場所です。
次のようなソース データから:
それは私に次のようなものを与えるでしょう:
NHibernate ICriteria を介してそのタイプのクエリを実行する方法を理解できませんでした。何かご意見は?