Mysql
 sql >> Base de données >  >> RDS >> Mysql

Performances MySQL de la requête faisant l'ajout de colonnes dans la clause where

@ e4c5 a raison de dire qu'aucun des indices ne vous aidera avec la requête actuelle. Vous pouvez commencer par ajouter les index suivants et modifier la requête avec des conditions supplémentaires afin que les index soient utilisés :

ALTER TABLE myTable
ADD INDEX(categoryId, value1),
ADD INDEX(categoryId, value2),
ADD INDEX(categoryId, value3),
ADD INDEX(categoryId, value4);

Et mettez à jour la requête comme ceci :

SELECT * FROM myTable WHERE categoryId = 1 AND (value1 <= 9) AND (value2 <= 9) AND (value3 <= 9) AND (value4 <= 9) AND (value1 + value2 + value3 + value4) > 9;
SELECT * FROM myTable WHERE categoryId = 1 AND (value1 <= 5) AND (value3 <= 5) AND (value4 <= 5) AND (value1 + value3 + value4) > 5;

Les conditions supplémentaires permettent de réduire le nombre de lignes à traiter. L'ajout d'index sur plus de colonnes accélérerait encore la procédure, mais je suggère d'essayer ceci en premier.