Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Leistung der Abfrage, die Spalten in der Where-Klausel hinzufügt

@e4c5 hat Recht, dass keiner der Indizes bei der aktuellen Abfrage hilft. Sie können beginnen, indem Sie die folgenden Indizes hinzufügen und die Abfrage mit zusätzlichen Bedingungen ändern, damit die Indizes verwendet werden:

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

Und aktualisieren Sie die Abfrage wie folgt:

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;

Die zusätzlichen Bedingungen helfen dabei, die Anzahl der zu verarbeitenden Zeilen einzugrenzen. Das Hinzufügen von Indizes für mehr Spalten würde dies weiter beschleunigen, aber ich schlage vor, dies zuerst zu versuchen.