sql >> Base de Datos >  >> RDS >> PostgreSQL

La forma más rápida de ejecutar una consulta de eliminación en una tabla grande en PostgreSQL

Si esta consulta está tardando mucho:

delete from PlanItems p where p.jobId = :jobid

y tienes un índice en PlanItmes(jobId) -- donde jobId es la primera columna del índice; entonces debe tener en cuenta otras cuestiones.

  1. ¿Existen restricciones de clave externa en cascada que usan jobId? ? Si es así, las cascadas pueden afectar esas tablas, y si son eliminaciones en cascada, entonces eliminar esas filas puede afectar a más tablas.

  2. ¿Hay un activador de eliminación en la tabla? Si es así, sus eliminaciones "simples" pueden estar haciendo mucho más trabajo de lo que piensa.

  3. ¿Hay una carga pesada en el sistema? Si es así, el tiempo puede estar simplemente esperando la oportunidad de eliminar las filas.

  4. ¿Están las vistas materializadas construidas sobre la mesa? Si es así, es posible que se estén actualizando.

Si ninguno de estos es el caso, entonces podría ser un problema sobre cómo está midiendo el tiempo transcurrido.