sql >> Databáze >  >> RDS >> Mysql

Výkon MySQL dotazu při přidávání sloupců v klauzuli where

@e4c5 má pravdu, že žádný z indexů s aktuálním dotazem nepomůže. Můžete začít přidáním následujících indexů a upravit dotaz pomocí dalších podmínek, aby se indexy používaly:

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

A aktualizujte dotaz takto:

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;

Další podmínky pomáhají zúžit počet řádků, které mají být zpracovány. Přidání indexů do více sloupců by to dále urychlilo, ale doporučuji nejprve vyzkoušet toto.



  1. Jak opravit „Procedura očekává parametr ‚@statement‘ typu ‚ntext/nchar/nvarchar‘.“ Chyba na serveru SQL Server

  2. Jak předat Java seznam objektů do Oracle uložené procedury pomocí MyBatis?

  3. Nelze odfiltrovat opakující se hodnoty v iReportu

  4. Jak oříznout řetězec v SQL Server před rokem 2017?