sql >> Databasteknik >  >> RDS >> PostgreSQL

Snabbaste sättet att utföra en raderingsfråga i stora tabeller i PostgreSQL

Om den här frågan tar lång tid:

delete from PlanItems p where p.jobId = :jobid

och du har ett index på PlanItmes(jobId) -- där jobId är den första kolumnen i indexet -- då måste du överväga andra frågor.

  1. Finns det överlappande främmande nyckelbegränsningar som använder jobId ? Om så är fallet kan kaskaderna påverka dessa tabeller -- och om de är överlappande borttagningar kan det påverka fler tabeller om de raderas.

  2. Finns det en raderingsutlösare på bordet? Om så är fallet kan dina "enkla" borttagningar göra mycket mer arbete än du tror.

  3. Är det en stor belastning på systemet? Om så är fallet kan tiden helt enkelt vänta på en möjlighet att ta bort raderna.

  4. Byggs materialiserade synpunkter på bordet? Om så är fallet kanske de uppdateras.

Om inget av dessa är fallet kan det bero på hur du mäter den förflutna tiden.




  1. cx_Oracle ansluter inte när du använder SID istället för tjänstens namn på anslutningssträngen

  2. Är mysql_real_escape_string tillräckligt för att Anti SQL Injection?

  3. Hur felsöker man en lagrad procedur i Toad?

  4. Lagra Apache Hadoop Data Output till Mysql Database