問題タブ [sqlperformance]

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.

0 投票する
3 に答える
706 参照

mysql - SQL クエリが 5 万件以上のレコードで非常に遅い

リンクと呼ばれるテーブルがあり、そこには 50000 以上のレコードがあり、フィールドのうちの 3 つが 、 、 の順にインデックスを持っていlink_idます。org_iddata_id

ここでの問題は、group by sql クエリを使用しているときに、読み込みに時間がかかることです。

クエリはこのようなものです

テーブルには20以上の列があります

アクセスを高速化するためにクエリを高速化するソリューションはありますか。

0 投票する
1 に答える
160 参照

sql - 458,000を超えるレコードのカテゴリブレッドクラムを生成するSQLクエリの実行を高速化するにはどうすればよいですか?

ネストされたセット階層モデルをいじっていて、CategoryID int Identity、CategoryName nvarchar(100)、L int、R int、CreatedOn datetime、UpdatedOndatetimeのフィールドを持つCategoryNestというカテゴリテーブルがあります。

クエリは正常に機能し、目的の出力を生成しますが、458,000レコードでテストすると、1時間以上かかります(注:クエリの実行はキャンセルされました)。

編集:編集したクエリを適用した後、結果はより速くなければなりませんが、私はまだ物事をさらにスピードアップするための提案を受け入れています。

このクエリを最適化して、数時間ではなく数秒以内に結果を取得する方法があるかどうか疑問に思いました。

編集:これ以上の時間はありません、それを世話しましたが、それでも物事をスピードアップするための提案を受け入れています。

ありがとうございました。

0 投票する
1 に答える
2695 参照

sql - 実行前にテーブル全体をRAMにロードするSQLヒント?

OLAP環境のいくつかの非常に大きなテーブルでいくつかの集計クエリを実行しています。現在、200 MB/sのディスクIOでボトルネックになっています。

これらのクエリは、92GBのRAMを搭載したマシンで実行しています。基本的に、実行前にテーブル全体をRAMにロードするようにSQLに指示するSQLヒントをクエリに書き込むことができますか?

何かのようなもの:

(ramdisk)を使用してmyTableから*を選択します

MSTSQLを使用しています。

0 投票する
1 に答える
1459 参照

sql - テーブルを分割しますが、複数の列に基づいてグループ化します

テーブルをグループに分割する際に興味深い問題があります。私は観光客のグループを持っています - それぞれが単一の言語を話し、および/または家族の一員です. テーブルをグループに分割する必要がありますが、家族や似た言語の話者を一緒に保ちたいと考えています。

観光客を 3 人までのグループに分けたいとしましょう (グループをもっと大きくする必要がある場合は、それで問題ありません)。ソリューションは、すべてのグループを完全に埋めるほどスマートである必要はありませんが、ベスト エフォート型のアプローチをとっています。

入力:

望ましい結果:

グループ 1 は、除外できない 1 人の家族を含む、すべての言語 1 の話者によって形成されます。

グループ 2 は、2 人のファミリー メンバー (5、6) と 1 人のランダム メンバー (9) によって形成され、3 人のグループになります。

グループ 3 は 2 人の同じ言語話者によって形成されます (7, 8)

私がやったこと

質問

複数の列に基づいて行をグループ化して、テーブルを分割するためのより良い方法はありますか?

0 投票する
0 に答える
665 参照

sql - 自己結合を持つ次の SQL を改善するにはどうすればよいですか

選択を行った後、データに対して自己結合と個別化を行っています。このクエリを記述するより良い方法があるかどうかはわかりません。提案していただけますか?

以下は、クエリと説明計画の出力です。

プラン:

  1. 上記の SQL を編集して、自己結合と不要なグループ化を削除しました。
  2. 結合に基づいて primary_secondary 行のみでグループ化を行っています。
  3. プライマリとセカンダリの間で、セカンダリに接続するプライマリ アカウントを決定しています。

これは同じ結果をもたらしています。これをさらに改善できないかと考えています。

予定:

0 投票する
1 に答える
4580 参照

sql-server - クエリが中断されたタスク状態と LCK_M_X 待機タイプで表示される理由

私は、C# 4.0、バックエンド SQL SERVER 2012 を使用して winform アプリケーションに取り組んでいます。クエリが保留中になるため、ソフトウェアがハングしているように見えることがあります。1 つのクエリが中断モードでアクティビティ モニターに表示されるため、この中断されたクエリは数回正常に実行されます。しかし、いつかこの問題が発生します。

アクティビティ モニターには次の情報が表示されます。

タスクの状態: 中断

コマンド : 更新

アプリケーション: .net SqlClient データ プロバイダー

待ち時間 : 5673610..... (無制限)

待機タイプ: LCK_M_X

待機リソース: keylock hobtid=72057594058768384 dbid=14 id=lock2dbc30880 mode=X associatedObjectId=72057594058768384

クエリの状態が中断される理由は何ですか。

一時停止するにはどうすれば停止できますか?

0 投票する
2 に答える
363 参照

mysql - WHERE句の条件順によるパフォーマンスメリットについて

3 つのテーブル (*主キー+用、外部用)を検討してください。

データ:

ユーザー:

ユーザー

フライト:

フライト

予約:

予約

次のクエリは、 で旅行する乗客のリストを取得します2013-05-06

私が持っている質問は次のとおりです。

  1. SQL エンジンは WHERE 句をどのように扱いますか? 上記のクエリを参照すると、最初に r.userid=u.id によって r と f を組み合わせて一時データ テーブル T1 を形成し、次に r.flightid=f.id によって T1 と f を組み合わせて別の一時テーブル T2 を形成し、最後に DepartureData をフィルタリングします。 T2で?

  2. 句が次のように変更された場合、パフォーマンスに変化はありますWHERE f.departureDate='2013-05-06' AND u.id=f.id AND r.userid=u.id AND r.flightid=f.idか? その場合、 f.departureDate='2013-05-06' は行を減らして一時テーブルを形成しますか?

0 投票する
0 に答える
533 参照

sql - ケース式の Oracle ビュー ロジックまたはパフォーマンス チューニング

要件に基づいてデータを抽出するビュー ロジックを作成しました。ビュー ロジックのパフォーマンスを改善するための提案または解決策が必要です。

マイテーブル:

私の見解:

「MYTABLE」には数百万のレコードがあります。そのため、ビュー ロジックは、プロダクションで最大のパフォーマンス ヒットになりました。STYPE、SQID、SNAME、CCID1、CCID2、CCID3 のインデックスがあります。でもまだ遅い…。

実行時間は105秒になりました!!

どうすればパフォーマンスを向上させることができるか教えてください...

更新:親切に提案しないでくださいMaterializedView

ありがとう!

0 投票する
3 に答える
696 参照

sql - SQL クエリの最適化: 時間がかかる

一連の注文を取得するために次のクエリを使用しています。

クエリは 4323 という結果を返しますが、これは十分に高速です。

ただし、クエリに追加の条件を追加する別のテーブル DiscarderOrders に存在しない場合にのみ返されるように、別の条件を設定する必要があります。

上記のクエリは多くの時間を要し、実行を続けます。クエリを高速に実行するためにできることはありますか? または、最初のクエリを最初に実行してから、別のクエリを実行して条件に基づいてフィルタリングする必要がありますか?