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

PostgreSQL:IKKE IN versus UNDTAGET ydelsesforskel (redigeret #2)

Forespørgsel #1 er ikke den elegante måde at gøre dette på... (IKKE) IN SELECT er fint for nogle få poster, men det kan ikke bruge indekser (Seq Scan ).

Før du havde UNDTAGET... sådan blev det gjort ved hjælp af en JOIN (HASH JOIN ):

    SELECT sp.id
    FROM subsource_position AS sp
        LEFT JOIN subsource AS s ON (s.postion_id = sp.id)
    WHERE
        s.postion_id IS NULL

EXCEPT dukkede op i Postgres for lang, lang tid siden... Men for eksempel ved at bruge MySQL tror jeg, at dette stadig er den eneste måde at opnå dette ved at bruge indekskryds.



  1. Sådan administrerer du din database med Adminer

  2. SQL-CASE:Kend og undgå 3 mindre kendte problemer

  3. Eksempel på JDBC-erklæring – Batch-indsæt, opdatering, slet

  4. Sådan identificeres ugyldige (beskadigede) værdier gemt i Oracle DATE-kolonner