sql >> Database teknologi >  >> RDS >> PostgreSQL

SQL-forespørgsel ved hjælp af IN med en liste meget langsom

Meget ofte slutter sig til en VALUES klausulen er mere effektiv:

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';

Vær opmærksom på formatet af "listen". I values klausul, skal hver værdi være indeholdt i parentes. ('v1'), ('v2'), ... i stedet for ('v1', 'v2', ...)

Online eksempel:http://rextester.com/UUWVG71217

Bemærk, at hvis den kolonne, du sammenligner værdierne med, virkelig er et tal (f.eks. heltal), bør du ikke angiv værdierne ved hjælp af enkelte anførselstegn, f.eks. values (1),(2),(3),...(2000)



  1. Sådan finder du dublerede værdier i en SQL-tabel

  2. Kan ikke etablere en forbindelse til MySQL i NetBeans IDE

  3. hvordan man migrerer mysql-data til ElasticSearch i realtid

  4. Opret forbindelse til MySQL direkte fra en iPad-app (ikke via PHP osv.)