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

Hurtigste måde at udføre en sletteforespørgsel i en stor tabel i PostgreSQL

Hvis denne forespørgsel tager lang tid:

delete from PlanItems p where p.jobId = :jobid

og du har et indeks på PlanItmes(jobId) -- hvor jobId er den første kolonne i indekset -- så skal du overveje andre spørgsmål.

  1. Er der kaskadende fremmednøglebegrænsninger, der bruger jobId ? Hvis ja, kan kaskaderne påvirke disse tabeller -- og hvis de er overlappende sletninger, kan sletning af disse rækker påvirke flere tabeller.

  2. Er der en slette-trigger på bordet? Hvis det er tilfældet, kan dine "simple" sletninger gøre meget mere arbejde, end du tror.

  3. Er der en stor belastning på systemet? Hvis det er tilfældet, venter tiden måske bare på en mulighed for at slette rækkerne.

  4. Er materialiserede synspunkter bygget på bordet? Hvis det er tilfældet, bliver de muligvis opdateret.

Hvis ingen af ​​disse er tilfældet, kan det være et problem med, hvordan du måler den forløbne tid.




  1. Inkrementelle statistikker bruges IKKE af Query Optimizer

  2. @@ROWCOUNT – Få antallet af rækker, der er berørt af den sidste sætning i SQL Server

  3. Hentning af org.hibernate.TransactionException:indlejrede transaktioner understøttes ikke fejl ved sletning

  4. MySQL Alter tabelkolonne