ホームページ >データベース >mysql チュートリアル >mysqlで関連クエリを使用する際に注意すべき点は何ですか?
1. ON 句と USING 句の列にインデックスがあることを確認してください。
インデックスを作成するときは、関連付けの順序を考慮する必要があります。テーブル A とテーブル B が列 c を使用して関連付けられている場合、オプティマイザの関連付け順序が A、B であれば、テーブル A の対応する列にインデックスを作成する必要はありません。未使用のインデックスは追加の負担をもたらします。一般的に、他の理由がない限り、関連付けシーケンスの 2 番目のテーブルの対応する列にインデックスを作成するだけで済みます。
2. MySQL が最適化にインデックスを使用できるように、GROUP BY および ORDER BY の式には 1 つのテーブル内の列のみが含まれるようにしてください。
例
MySQL がクエリ内の関連付けシーケンス A および B に従って関連付け操作を実行すると仮定すると、次の疑似コードを使用して次のことができます。 MySQL がこのクエリをどのように完了するかを示します:
outer_iterator = SELECT A.xx,A.c FROM A WHERE A.xx IN (5,6); outer_row = outer_iterator.next; while(outer_row) { inner_iterator = SELECT B.yy FROM B WHERE B.c = outer_row.c; inner_row = inner_iterator.next; while(inner_row) { output[inner_row.yy,outer_row.xx]; inner_row = inner_iterator.next; } outer_row = outer_iterator.next; } 可以看到,最外层的查询是根据A.xx列来查询的,A.c上如果有索引的话,整个关联查询也不会使用。再看内层的查询,很明显B.c上如果有索引的话,能够加速查询,因此只需要在关联顺序中的第二张表的相应列上创建索引即可。
以上がmysqlで関連クエリを使用する際に注意すべき点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。