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

MySQL ydeevne af forespørgselsfremstilling tilføjelse af kolonner i where-klausul

@e4c5 har ret i, at ingen af ​​indekserne vil hjælpe med den aktuelle forespørgsel. Du kan starte med at tilføje følgende indekser og ændre forespørgslen med yderligere betingelser, så indeksene bliver brugt:

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

Og opdater forespørgslen sådan her:

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 yderligere betingelser hjælper med at indsnævre antallet af rækker, der skal behandles. Tilføjelse af indekser på flere kolonner ville fremskynde dette yderligere, men jeg foreslår, at du prøver dette først.



  1. Hvordan konverterer man betinget tommer til cm i MySQL (eller lignende konverteringer under SELECT)?

  2. HVORDAN laver man en join i MySQL, hvor nøglen er en understreng af nøgle2?

  3. VÆLG COUNT() vs mysql_num_rows();

  4. MySQL-forespørgsel mislykkedes på grund af reserveret søgeord?