ホームページ  >  記事  >  データベース  >  mysqlで関連クエリを使用する際に注意すべき点は何ですか?

mysqlで関連クエリを使用する際に注意すべき点は何ですか?

PHPz
PHPz転載
2023-05-28 15:17:301022ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。