私は2つのデータベースを持っています:localhost & remotehost。 Localhostはうまく機能しているように見えます(このボードの助けを借りて、1秒弱です)。 mysqldumpを使用して、テーブル構造、インデックス、&データを含むlocalhostをremotehostにダンプしました。私はremotehostがlocalhostの仮想レプリカであることを期待しましたが、リモートホストでクエリを実行すると、実行に1分以上かかります。説明文は異なっています...「タイプ」を「範囲」に変更することや、使用されるインデックスなど、さまざまな違いがあります。同じデータベースだが異なる説明の結果
(これのいくつかは、おそらくPRIMARYインデックスを使用するように強制的に固定することができますが、私はむしろ、問題の根本を取得し、remotehostのは異なった動作をする理由を理解するだろう)
私の声明:
SELECT names.id, names.first, addr.last FROM names, addr WHERE names.first LIKE 'H%' AND addr.last IS NOT NULL AND names.id = addr.id GROUP BY names.id LIMIT 10
ローカルホストからのEXPLAIN文:
id| select_type|table|type |possible_keys |key |key_len|ref |rows|Extra
1 | SIMPLE |names|index|PRIMARY,first |PRIMARY|4 |NULL |448 |Using where
1 | SIMPLE |addr |ref |last |last |4 |files.names.last |25 |Using where
remotehostのからの声明EXPLAIN:
id| select_type|table|type |possible_keys |key |key_len|ref |rows|Extra
1 | SIMPLE |names|range|PRIMARY,first |first |903 |NULL |955 |Using where; Using temporary; Using filesort
1 | SIMPLE |addr |ref |last |last |4 |files.names.last |25 |Using where
UPDATE:
Localhost is using mysql version 5.1.46-log.
Remotehost is using mysql version 5.0.91-log.
ServerFaultに移動する議決権は、プログラミングに関する質問ではなく、システム管理に関する質問です。 –
しないでください....これは何よりもmysqlの質問です。このボードにもっと多くのmysqlエキスパートがいるようです。 –
my.cnfファイルを比較して、何かがリモートホスト上で間違って構成されていないことを確認してください。既にチェックしたようですが、remotehostのaddr.idにインデックスがあることを確認してください。また、「テーブル名を最適化する」を実行してみてください。統計を更新するにはremotehostで指定します。あなたはそれをする必要はありませんが、私は他に何を提案するか分かりません。 –