sql >> Databasteknik >  >> RDS >> Mysql

MySQL-prestanda för frågegörande tillägg av kolumner i where-klausul

@e4c5 har rätt att inget av indexen kommer att hjälpa med den aktuella frågan. Du kan börja med att lägga till följande index och ändra frågan med ytterligare villkor så att indexen används:

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

Och uppdatera frågan så här:

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;

De ytterligare villkoren hjälper till att minska antalet rader som ska bearbetas. Att lägga till index på fler kolumner skulle påskynda detta ytterligare, men jag föreslår att du provar detta först.



  1. Gör ingenting i en triggerprocedur

  2. WSJDBCConnection omsluter inte objekt av typen oracle.jdbc.OracleConnection

  3. Testar Oracle to_date-funktionen

  4. Hur man infogar rader i SQL Server Table genom att redigera tabellrader GUI - SQL Server / TSQL Tutorial Del 101