問題タブ [explain]

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 投票する
1 に答える
107 参照

mysql - インデックス付きクエリですが、それでもすべての行を検索します

私は次のmysqlクエリを持っています

クエリについて説明すると、これが返されます

問題は、インデックスのために、行数をテーブルの行数よりもはるかに少なくするべきではないかということです。

user_idはプライマリインデックスなので、points_for_userだけでインデックスを作成してみましたが、それでもすべての行を調べます。user_id AND points_for_userのインデックスは、引き続きすべての行を検索します。

私は何が欠けていますか?

ありがとう!


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

mysql - ref の mysql の 2 つの const は const 型であってはなりませんか?

次のMySQLクエリがあります

以下が返されます

なぜ型が const ではなく ref なのですか?

user_item_id は、user_id と item_id の複合インデックスです。

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

mysql - MySQL での複数列インデックスの効率

3 列のインデックスを持つ MyISAM テーブルがある場合、次のようなものです。

問題は、次のクエリでインデックスを完全に利用できるかどうかです。

言い換えれば、インデックスが b-tree であることを考慮して、MySQL は途中の列をスキップし、最初と最後の列でクイック検索を実行できますか?

EXPLAIN はインデックスが使用されることを示しているようですが、エクストラは次のように述べUsing where; Using indexています。これが実際に何を意味するのかわかりません。

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

mysql - プライマリ インデックスが使用され、適切な EXPLAIN プランが使用されているにもかかわらず、MySQL のクエリが遅い

次のタイプの低速クエリが大量に発生している 130 万行の非常にトラフィックの多いテーブルがあります。

それでも、このクエリの説明計画は最適な計画を示しています (主キーを使用しています)。

スロークエリログは次のとおりです。

すべてのクエリの約 30% が 1 秒を超えており、すべてのクエリの約 10% が 10 秒を超えています (!)。

このクエリの実行速度が遅い原因は何ですか? 私が知る限り、計画は完璧で、1 行だけがスキャンされ、ロックの取得に時間はかかりませんでした。それで、どうなりますか?

更新: サーバーの仕様を含めるのを忘れました。これは、64G Quad Xeon X5650 2.66GHz (24 コア)、Mysql 5.1.52-rel11.6-log Percona サーバー 11.6、12 ディスク PERC H700 RAID アレイ上にあります。このサーバーは長い間完全に機能していました (稼働時間は 565 日を示しています)。

更新 2: このテーブルには 1 つのインデックスしかありません。これは、タプル (app_id、user_id、slice_id、mode_id) で構成されるプライマリ インデックスです。さらに、これは書き込み専用のマスターであり、他の 3 つのスレーブ サーバーがすべての読み取りを処理します。

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

mysql - どちらがより効果的かを判断する方法: DISTINCT または WHERE EXISTS?

たとえば、3 つのテーブルがあります:usergrouppermissionuser_groupsgroup_permissions

繰り返しなしで、特定のユーザーのすべての権限を選択する必要があります。同様の問題が発生するたびに、どのバージョンのクエリがより適切かを判断できません。

説明に基づいて結論を出すのに十分な経験があります。最初のクエリにはサブクエリがありますが、私の経験では、最初のクエリの方が高速であることが示されています。おそらく、結果としてフィルタリングされたアクセス許可が多数になるためです。

この状況であなたはどうしますか?なんで?ありがとう!

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

mysql - 利用可能なpossible_keysはありませんが、where句にキーが存在します

Explain ステートメント:explain select id from words_data where pid=232632; ただしpossible_keys、列にリストされているキーはありません。

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

mysql - Performace Lag in Mysql query

This mysql query takes 5 minutes 20 seconds to execute

The explain give the following result

Number of rows in a table is 50,000.

How can I optimize this ?

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

mysql - MYSQLクエリEXPLAINSELECT

一部のテーブルのEXPLAINSELECTの結果は次のとおりです。

両方のテーブルが「key」列によるインデックスを使用していることを明確にしたいのですが、table1の「Usingindex」が表示されません??? 私はこれを気にする必要がありますか?

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

database - postgresql 8.4 の group by 句に関する計画の問題を説明する

以下に、グループバイ句問題を使用した説明計画に関連する詳細な説明を示します。

テーブル: web_categoryutfv1_24hr_ts_201209
列: "5mintime",category,hits,bytes,appid
行: 871
インデックス: "web_categoryutfv1_24hr_ts_201209_idx" btree ("5mintime")

次のクエリを実行しています。

t_totalcnt 変数から総行リターン 55 を取得しました。今、私はweb_categoryutfv1_24hr_ts_201209テーブルを分析し、もう一度説明して同じクエリを実行します

次の実行計画を取得します。

今、私は HashAggregate (cost=30.39..30.75 rows=24 width=31) を出力する説明計画を取得しました。これは、rows=24 を示していますが、実際には総行戻り値は 55 である必要があります。クエリから group by 句を削除すると、373 行が得られました計画の出力と実際のクエリの実行について説明します。

だから私は知りたいのですが、クエリのexplain planとgroup by句に問題がありますか?

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

mysql - MySQL EXPLAIN 自動解析

MySQL EXPLAIN コマンドの出力の自動分析を実装する必要があります。これは、クエリを「悪い」(たとえば、インデックスを使用しない場合)、「中間」(最適化できる)、および「良い」としてマークします。

それを実装するための既存のソリューションまたはアルゴリズムはありますか?