sql >> Databáze >  >> RDS >> PostgreSQL

SQL dotaz pomocí IN se seznamem velmi pomalý

Velmi často se připojuje k VALUES klauzule je efektivnější:

SELECT count(*) 
FROM mytable 
  JOIN (
     values ('v1'), ('v2'), (...), ('v2000')
  ) as lookup(value) on lookup.value = mytable.some_column
WHERE NOT other_column = 'something'
AND another_column = 'something_else';

Pozor na formát „seznamu“. V values klauzule, každá hodnota musí být uzavřena v závorkách. ('v1'), ('v2'), ... místo ('v1', 'v2', ...)

Online příklad:http://rextester.com/UUWVG71217

Upozorňujeme, že pokud je sloupec, se kterým porovnáváte hodnoty, skutečně číslo (např. celé číslo), neměli byste ne zadejte hodnoty pomocí jednoduchých uvozovek, např. values (1),(2),(3),...(2000)



  1. Jaké je použití funkce DECODE v SQL?

  2. jak porovnat datum a čas v php/mysql

  3. Jak vložit seznam pythonů do tabulky Postgres

  4. Odstraňování problémů s výkonem CPU serveru SQL Server