Jak mogę sprawdzać zapytania SQL za pomocą psql?


173

Chciałbym porównać niektóre zapytania SQL z moją bazą danych PostgreSQL.Czy jest jakiś sposób, aby móc wykonywać kwerendy SQL używając psql ?

+3

Więcej informacji na temat porównywania zapytań PostgreSQL: http://dba.stackexchange.com/q/42012/9622 15 maj. 132013-05-15 22:29:39

236

Po prostu włącz czas, wpisując:

\timing

+1

Z bashu opcja „-c” 'psql' nie pozwala na to ustawienie.Możesz to zrobić za pomocą czegoś takiego: '' 'psql --o/dev/null < 14 lip. 162016-07-14 17:38:46

+1

Lub użyj 'psql -c 'timing' -c 'select 1'' 24 sie. 172017-08-24 02:11:57


60

Czas można włączyć za pomocą polecenia \timing w wierszu polecenia psql (jak już powiedział Caleb).

Jeśli jesteś w wersji 8.4 lub nowszej, you can add an optional on/off argument to \timing , co może być pomocne, jeśli chcesz mieć możliwość set timing on in .psqlrc - możesz wtedy ustawić \timing on jawnie w skrypcie, w którym zwykły \timing przeciwnym razie wyłączyłby go

  0

http://www.designmagick.com/article/14/PostgreSQL-Query-Timing daje „Odmowa dostępu”. 22 wrz. 172017-09-22 18:01:01


1

Czas powrotu \timing obejmuje również opóźnienie sieci, jeśli łączysz się ze zdalnym serwerem.

Jeśli nie chcesz tego i nie potrzebujesz również wyników zapytania, lepiej użyj EXPLAIN ANALYZE , który wyświetla plan kwerend z szacunkami planisty oraz rzeczywistymi czasami wykonania.

na przykład EXPLAIN ANALYZE SELECT foo from bar ;

  0

... jedynym problemem jest to, że nie otrzymujesz normalnego wyniku zapytania. 17 lis. 172017-11-17 04:56:18

  0

Używanie 'wyjaśnij analizę' daje czasy, które są w przybliżeniu dwa razy większe niż to, co widzę przy użyciu' timing', co jest przeciwieństwem tego, czego oczekiwałbym na podstawie komentarzy tutaj dotyczących opóźnienia sieci.Podejrzewam, że w normalnym wykonywaniu 'analyze' istnieje dodatkowy narzut, który dodaje czas zapytania.Bazując na dokumentach, myślę, że 'EXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM bar' da ci bardziej przydatne informacje o taktowaniu.Szczegółowe informacje można znaleźć na stronie https://www.postgresql.org/docs/9.6/static/sql-explain.html. 05 gru. 172017-12-05 14:53:33