問題タブ [sql-optimization]
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 - MySQL: 特定のノードで葉を見つける方法
この種の質問がここに何度も投稿されていることは知っています。たとえば、Java の方法です。
id
標準ツリー パターン ( 、parent_id
、some_data
)で膨大な量のデータ (150k+) を持っています。
質問:特定の node_id のリーフを取得するにはどうすればよいですか?
テーブル構造:
データベース:MySQL 5.1.61
mysql - サブセレクトまたは結合? この mysql クエリを記述するより良い方法はありますか?
何かを行うためのより良い方法が常にあることは知っていますが、どうすればよいかわかりませんか? このクエリを最適化する最善の方法は何ですか? Joins、別のクエリなどを使用する必要があります.複雑なクエリではないことはわかっています..知識を広げようとしています。
任意の提案をいただければ幸いです!
mysql - からのサブクエリでSQLを最適化する
SQLステートメントを最適化したいと思います。以下は元のステートメントです。
私のPCでは約34秒かかります。
私のアイデアは、サブクエリを結合として記述し、Where句で条件を設定することでした。
これが私の信じられないほど高速なSQLです。
書き込みをexplain improved_sql
行うと、ImpossibleWHERE列が表示されます。試してみましたが、なぜそれが不可能なのかわかりませんでした。フィールドの互換性を確認しました。intとvarcharなどを比較する必要がある場合がないようにするためです。大きなエラーは見つかりませんでした。それが私がここにいる理由です。
WHERE句に論理エラーがありますか?1
フィールドになり、後であるように頼むようなもの2
ですか?
IDで終わるフィールドはINTで終わり、NAMEで終わるフィールド、コードはvarchar(255)テキストのあるフィールドは450および8192 varchar(1か所のみが使用されます)
翻訳:「denumire」は「説明」を意味します-またはそのようなもの:)
サーバー側で実行されているmysqlのバージョンがわからない(おそらく5)。
正当な理由がある場合は、テーブル構造の変更を提案できます。おそらくコードが調整されます。
編集:
ここから来るのは不可能です:
備考:左の結合ではなく、内側の結合。
Edit2:テーブル:furnizorlist 42,751レコードテーブル:distribitems72,290レコード
sql-server-2008 - where句が削除されてから追加された場合の実行計画の最適化
9 秒で実行されるテーブル値関数を使用するストアド プロシージャがあります。テーブル値関数を変更して where 句を削除すると、ストアド プロシージャは 3 秒で実行されます。where 句を追加し直しても、クエリは 3 秒で実行されます。
実行計画を調べたところ、where 句を削除した後、実行計画に並列処理が含まれ、2 つのテーブルのスキャン数が 50000 と 65000 から 5 と 3 に減少したようです。where 句を追加した後DBCC FREEPROCCACHE を実行しない限り、最適化された実行プランは引き続き実行されます。
質問 1. 最初に where 句を削除した場合にのみ、SQL Server が両方のクエリに対して最適化された実行プランを使用し始めるのはなぜですか?
- SQL Server にこの実行計画を強制的に使用させる方法はありますか?
また、これは where 句で (Parameter is null または Parameter) を使用するパラメーター化されたオールインワン クエリであり、パフォーマンスに悪いと思います。
sql - SQLクエリの一時テーブルと短絡操作
以下は、最適化したいクエリです。最適化のボトルネックは CONDITION_B です。
CONDITION_B を残す上記のクエリの結果を一時テーブルに配置し、その一時テーブルに CONDITION_B を適用すると、パフォーマンスが大幅に向上します。CONDITION_B は、CONDITION_A の結果が false かどうかを常に評価していると思います。
もっと良い方法があれば誰か教えてください。また、短絡操作は SQL クエリ ステートメントで機能しますか? はいの場合、それらの処理の順序は何ですか。
mysql - MySQL クエリの最適化および/または微調整
両方のテーブルが巨大な次のクエリがあります。クエリが非常に遅かったので、このクエリを最適化するアイデアが必要ですか、それとも他の解決策はありますか?
ところで、適切なインデックスが適用されています。
アップデート:
さて、説明結果を添付しました。
mysql - MySQL クエリの最適化 - インデックス
私はこれらのテーブルを持っています:
dstat の条件を使用して、cstat.order または dstat.cstat_order の順序で cstat からレコードを選択する必要があります。
私のクエリは次のようになります。
ファイルソートの使用を防ぐために作成するインデックスを誰か助けてもらえますか? 私はほとんどすべてを試したと思いますが、失敗しました。この基本クエリにはさらに変更があります (テーブル dstat の別の 1 つまたは複数の結合ですが、現時点では重要ではありません)。
どうもありがとうございました。
編集:正直に言うと、私は多くのインデックスを試しました。私が宣言したベースは、cstat_id_cstat の主キーです。現時点では、次のインデックスがあります。
これにより、インデックス付きの読み取りに関する問題が部分的に解決されます。ただし、ソートは常にファイルソートを使用して行われます。
EXPLAIN
mysql - SUMで選択を最適化...CASE
このクエリを最適化する方法はありますか?
これはEXPLAIN出力です。
ありがとう!
ルチアーノ
mysql - このネストされたSQLクエリを最適化する方法
データベーススキーマは次のとおりです。
[編集済み]
以下のクエリで何をしているのかを説明します。
最も内側のクエリsaleId
:条件を満たすすべてのを選択しWHERE
ます
中央のクエリ:productId
の一部であったすべてのを選択しますsaleId
最も外側のクエリ:SUM
とproducts.cost
を選択しますvendors.name
。
そして、これが私が思いついたSQLクエリです:
これを最適化するのに何か助けはありますか?
sql - マルチテーブルクエリのパフォーマンスに関する質問
マルチテーブルクエリを実行するには、次の2つの方法があります。
クエリ1:
クエリ2:
各行について:
別のクエリを実行します。
テーブルが非常に大きい場合、どちらがパフォーマンスが優れていますか?