Maison > Article > base de données > À quoi devez-vous faire attention lorsque vous utilisez des requêtes associées dans MySQL ?
1. Assurez-vous qu'il y a des index sur les colonnes dans les clauses ON et USING.
Lors de la création d'un index, vous devez tenir compte de l'ordre des associations. Lorsque la table A et la table B sont associées à l'aide de la colonne c, si l'ordre d'association de l'optimiseur est A, B, alors il n'est pas nécessaire de créer un index sur la colonne correspondante de la table A. Les index inutilisés entraîneront une charge supplémentaire. De manière générale, sauf autre raison, il vous suffit de créer des index sur les colonnes correspondantes de la deuxième table de la séquence d'association.
2. Assurez-vous que toutes les expressions dans GROUP BY et ORDER BY n'impliquent que des colonnes d'une seule table, afin que MySQL puisse utiliser les index pour l'optimisation.
Exemple
En supposant que MySQL effectue des opérations d'association selon l'ordre d'association A et B dans la requête, le pseudo-code suivant peut être utilisé pour représenter comment MySQL termine cette requête :
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上如果有索引的话,能够加速查询,因此只需要在关联顺序中的第二张表的相应列上创建索引即可。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!