1

マッピングテーブルの目的と、それがMySQLクエリをどのように高速化するかを知りたいです。私は遅いMySQLクエリの高速化に取り組んでおり、このスタックオーバーフローの質問に遭遇しました。コメントは、マッピングテーブルが両方のテーブルを結合するクエリを高速化するだけでなく、データベースを構造化するための適切な方法であることを示唆しています。

私は非常によく似たテーブル構造を持っており、1対多の関係にあります。テーブルが大きくなるにつれて、クエリの実行時間は許容できないレベルまで上昇し続けます。私は自分の問題を解決するのに役立つウェブ上で多くを見つけることができなかったので、私はスタックオーバーフローを試してみましたが、皆さんは私をがっかりさせたことがないからです。

4

2 に答える 2

4

答える必要がある最初のことは、クエリの実行が非常に遅い理由です。次のクエリがあると仮定します

SELECT * FROM Customer WHERE CustomerID= 1

動作が遅いです。では、なぜ動作が遅いのかをどのように判断しますか?次のように入力します。

EXPLAIN ALL SELECT * FROM Customer WHERE CustomerID=1

これにより、MySQLがデータに到達する方法を示す結果セットが返されます。ここでは、クエリの最適化に役立つ、欠落しているインデックスなどに関する手がかりを見つけることができます。

その他の回答については、次のリンクを参照してください。

http://dev.mysql.com/doc/refman/5.0/en/explain.html

MySQLテーブルインデックスの最適化

マッピングテーブルを使用していて、クエリとインデックス作成が最適でない場合でも、パフォーマンスが大幅に低下します。

于 2012-05-04T08:56:24.950 に答える
1

マッピングテーブルの目的を知りたいのですが

マッピングテーブルは、「多対多」の関係を表すために使用されます。たとえば、あなたが引用した質問には、本と学生の2つのエンティティがあります。学生はたくさんの本を借りることができます。本は多くの学生に借りられるかもしれません。

リレーショナルモデルでこれを表す標準的な方法は、「マッピングテーブル」を使用することです。このテーブルには、本や学生への外部キーと、ローンに関連する情報(たとえば、開始日と終了日)が含まれます。

マッピングテーブルは、実際、多対多の関係をモデル化するための「適切な」方法です。

そしてそれがMySQLクエリをどのようにスピードアップするか

ほとんどの場合、そうではありませんが、通常、「多対多」の関係を表す他の方法よりも優れたパフォーマンスを発揮します。パフォーマンスが懸念される場合、@Namphibianの答えは出発点としてお金にあります。

于 2012-05-04T09:33:32.880 に答える