PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Najszybszy sposób na wykonanie zapytania usuwającego w dużej tabeli w PostgreSQL

Jeśli to zapytanie zajmuje dużo czasu:

delete from PlanItems p where p.jobId = :jobid

i masz indeks na PlanItmes(jobId) -- gdzie jobId to pierwsza kolumna w indeksie - musisz rozważyć inne kwestie.

  1. Czy istnieją kaskadowe ograniczenia kluczy obcych, które używają jobId? ? Jeśli tak, kaskady mogą wpłynąć na te tabele – a jeśli kaskadowo usuwają, usunięcie tych wierszy może wpłynąć na więcej tabel.

  2. Czy w tabeli jest wyzwalacz usuwania? Jeśli tak, twoje "proste" usuwanie może wykonywać o wiele więcej pracy, niż myślisz.

  3. Czy system jest mocno obciążony? Jeśli tak, czas może po prostu czekać na możliwość usunięcia wierszy.

  4. Czy na stole budowane są widoki zmaterializowane? Jeśli tak, mogą być odświeżane.

Jeśli żadna z tych sytuacji nie występuje, może to być problem z pomiarem czasu, który upłynął.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak otrzymywać automatyczne powiadomienia o zmianach w tabelach?

  2. Funkcja agregacji, aby uzyskać różnicę lub stosunek dwóch wierszy w kolejności

  3. Wydajne zapytanie o najnowsze rekordy za pomocą Postgresql

  4. Postgres SELECT gdzie WHERE jest UUID lub ciągiem

  5. BeanCreationException:Błąd podczas tworzenia fasoli o nazwie „flywayInitializer”