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

Nejrychlejší způsob, jak provést odstraňovací dotaz ve velké tabulce v PostgreSQL

Pokud tento dotaz trvá dlouho:

delete from PlanItems p where p.jobId = :jobid

a máte index na PlanItmes(jobId) -- kde jobId je první sloupec v indexu – pak musíte zvážit další problémy.

  1. Existují kaskádová omezení cizího klíče, která používají jobId ? Pokud ano, kaskády mohou mít dopad na tyto tabulky – a pokud se jedná o kaskádová smazání, pak smazání těchto řádků může ovlivnit více tabulek.

  2. Je na stole spouštěč mazání? Pokud ano, vaše „jednoduché“ smazání může dělat mnohem více práce, než si myslíte.

  3. Je systém příliš zatížen? Pokud ano, může se stát, že čas prostě čeká na příležitost smazat řádky.

  4. Jsou materializované pohledy postavené na stole? Pokud ano, mohou být aktualizovány.

Pokud žádný z těchto případů neplatí, může jít o problém v tom, jak měříte uplynulý čas.




  1. Mysqldump pouze tabulky s určitou předponou / zástupnými znaky Mysqldump?

  2. Chyba syntaxe SQL s podřetězcem a charindexem

  3. Jak exportovat fulltextové soubory pomocí SQL?

  4. Jak vložit řádky s max(pole_objednávky) + 1 transakčně v PostgreSQL