Як я можу проводити SQL-запити за допомогою psql?


Відповіді:


321

Просто ввімкніть терміни, ввівши:

\timing


1
З-за баш, опція "-c" psqlне дозволяє це налаштування. Ви можете зробити це з чимось на кшталт: psql --o /dev/null <<EOF \timing select 1 EOF
3manuek

6
Або зробітьpsql -c '\timing' -c 'select 1'
cdmckay

72

Час можна ввімкнути за допомогою \timingзапиту psql (як уже сказав Калеб).

Якщо ви перебуваєте на 8.4 або вище, ви можете додати необов'язковий аргумент увімкнення / вимкнення\timing , який може бути корисним, якщо ви хочете мати можливість встановити таймінги в .psqlrc - тоді ви можете встановити \timing onявно в сценарії, де \timingв іншому випадку звичайна буде перемикатися це вимкнено


12

Час, який \timingповертається, також включає затримку мережі, якщо ви підключаєтесь до віддаленого сервера.

Якщо ви цього не хочете і вам також не потрібен вихід запиту, краще скористайтеся EXPLAIN ANALYZE, що виводить план запитів із оцінками планувальника плюс фактичні терміни виконання.

наприклад, EXPLAIN ANALYZE SELECT foo from bar ;


1
... єдине питання полягає в тому, що ви не отримуєте звичайний вихід запиту.
dezso

2
Використовуючи час explain analyzeвиходу, приблизно вдвічі більший, ніж я бачу при використанні \timing, це протилежне тому, що я б очікував, грунтуючись на коментарях щодо затримки в мережі. Я підозрюю, що в нормальному виконанні є накладні витрати, analyzeщо додає часу запиту. Виходячи з документів, я думаю, що EXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM barце дасть вам більше корисної інформації про час. Докладніше див. У postgresql.org/docs/9.6/static/sql-explain.html .
larsks
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.