:: DEVELOPER ZONE
MySQL utilise un optimiseur de coûts pour trouver le meilleur moyen de résoudre une requête. Dans de nombreux cas, MySQL peut calculer la meilleure solution pour une requête, mais parfois, MySQL n'a pas les informations nécessaires, et il fait des évaluations.
Pour les cas où MySQL ne fait pas le "bon" choix, des outils sont disponibles, pour que vous aidiez MySQL :
Utilisez la commande EXPLAIN pour savoir comment MySQL va traiter la
requête. Pour l'utilisez, ajoutez simplement le mot clé EXPLAIN avant
votre requête SELECT :
mysql> EXPLAIN SELECT * FROM t1, t2 WHERE t1.i = t2.i;
EXPLAIN est présenté en détails dans la section Section 7.2.1, « Syntaxe de EXPLAIN (Obtenir des informations sur les SELECT) ».
Utilisez la commande ANALYZE TABLE tbl_name pour mettre à jour les distributions
de clés dans la table traitée.
See Section 14.5.2.1, « Syntaxe de ANALYZE TABLE ».
Utilisez l'option FORCE INDEX pour la table scannée, pour dire à MySQL
que les scans de tables sont très coûteux, comparés aux scans d'index.
See Section 14.1.7, « Syntaxe de SELECT ».
SELECT * FROM t1, t2 FORCE INDEX (index_for_column) WHERE t1.col_name=t2.col_name;
USE INDEX et IGNORE INDEX peuvent aussi être utiles.
STRAIGHT_JOIN de niveau global ou table. See Section 14.1.7, « Syntaxe de SELECT ».
Vous pouvez paramétrer les variables globales ou spécifiques au thread. Par
exemple, lancez mysqld avec l'option --max-seeks-for-key=1000 ou utilisez
SET max_seeks_for_key=1000 pour dire à l'optimiseur qu'il doit supposer que les
scans de clés ne représenteront pas plus de 1000 recherches.
Voyez Section 5.2.3, « Variables serveur système ».
© 1995-2005 MySQL AB. All rights reserved.
