Mysql
 sql >> Database >  >> RDS >> Mysql

Prestazioni MySQL delle query che fanno l'aggiunta di colonne nella clausola where

@e4c5 ha ragione sul fatto che nessuno degli indici aiuterà con la query corrente. Puoi iniziare aggiungendo i seguenti indici e modificare la query con condizioni aggiuntive in modo che gli indici vengano utilizzati:

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

E aggiorna la query in questo modo:

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;

Le condizioni aggiuntive aiutano a restringere il numero di righe da elaborare. L'aggiunta di indici su più colonne accelererebbe ulteriormente, ma suggerisco di provarlo prima.