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

Jak przyspieszyć działanie Pythona / PostgreSQL?

Nie trać czasu na profilowanie. Czas jest zawsze w operacjach na bazie danych. Rób jak najmniej. Tylko minimalna liczba wkładek.

Trzy rzeczy.

Jeden. Nie WYBIERZ w kółko, aby dostosować wymiary Data, Nazwa hosta i Osoba. Pobierz wszystkie dane RAZ do słownika Pythona i użyj ich w pamięci. Nie rób powtarzających się wyborów singletonowych. Użyj Pythona.

Dwa. Nie aktualizuj.

W szczególności nie rób tego. To zły kod z dwóch powodów.

cursor.execute("UPDATE people SET chats_count = chats_count + 1 WHERE id = '%s'" % person_id)

Należy go zastąpić prostym SELECT COUNT(*) FROM ... . Nigdy nie aktualizuj, aby zwiększyć liczbę. Po prostu policz wiersze, które są tam za pomocą instrukcji SELECT. [Jeśli nie możesz tego zrobić za pomocą prostego WYBIERZ LICZBA lub WYBIERZ LICZBA(DISTINCT), brakuje niektórych danych – Twój model danych powinien zawsze zapewniać prawidłowe pełne zliczenia. Nigdy nie aktualizuj.]

I. Nigdy nie buduj SQL używając podstawiania ciągów. Całkowicie głupi.

Jeśli z jakiegoś powodu SELECT COUNT(*) nie jest wystarczająco szybki (najpierw test, zanim zrobisz cokolwiek kiepskiego), możesz buforować wynik liczenia w innej tabeli. PO wszystkich obciążeniach. Wykonaj SELECT COUNT(*) FROM whatever GROUP BY whatever i wstaw to do tabeli zliczania. Nie aktualizuj. Kiedykolwiek.

Trzy. Użyj zmiennych wiązania. Zawsze.

cursor.execute( "INSERT INTO ... VALUES( %(x)s, %(y)s, %(z)s )", {'x':person_id, 'y':time_to_string(time), 'z':channel,} )

SQL nigdy się nie zmienia. Wartości powiązane zmieniają się, ale SQL nigdy się nie zmienia. To jest DUŻO szybsze. Nigdy nie twórz instrukcji SQL dynamicznie. Nigdy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres - KRYTYCZNY:pliki bazy danych są niezgodne z serwerem

  2. Jak mogę zatrzymać skrypt Postgres, gdy napotka błąd?

  3. Ustawianie limitu czasu połączenia z PDO

  4. Oblicz następny klucz podstawowy - o określonym formacie

  5. Wyświetlaj tabele w schemacie PostgreSQL