wiki

test2

View on GitHub

как быстро набить базу данных тестовыми данными?

INSERT INTRO client (name, active) 
SELECT CONCAT ('Gen Cli', idx), (random()>0.5)
FROM generate_series(1, 50000000) as idx;
INSERT INTO user_client_link (user_id, client_id)
select 1, id from client where id>=10 and id < 1000000

PostgreSQL Explain и оптимизация запросов

как в идее пользоваться анализатором?
нашел как запустить через выпадающее меню

есть Explayn Plan а есть Explayn Analyse в чем разница?
"Explain Plan" предоставляет информацию о плане выполнения запроса без его фактического выполнения. Это позволяет вам получить предполагаемый план выполнения запроса, который будет использоваться базой данных. Результат "Explain Plan" содержит информацию о порядке обработки таблиц, использовании индексов и других деталях запроса, но не включает в себя статистику о фактическом времени выполнения.
"Explain Analyze" также предоставляет информацию о плане выполнения запроса, но с дополнительным элементом анализа. Эта команда фактически выполняет запрос и возвращает статистику о реальном времени выполнения. Результат "Explain Analyze" включает в себя информацию о времени выполнения каждой части запроса, что позволяет вам оценить производительность и оптимизировать запрос на основе фактических данных.

какие операции могут быть?
Full Scan - или последовательное сканирование (Seq scan), означает, что база данных будет сканировать всю таблицу, чтобы найти строки, соответствующие условиям запроса. Это может быть медленным методом, особенно для больших таблиц, так как он требует просмотра каждой строки в таблице.
Index Scan - означает, что будет использоваться индекс для поиска строк, удовлетворяющих условиям запроса. Индексы позволяют ускорить поиск данных и сделать выполнение запроса более эффективным.
Hash Join - это метод соединения таблиц, при котором база данных создает хеш-таблицу для одной из таблиц и затем использует ее для соединения с другой таблицей. Этот метод может быть эффективным для соединения больших таблиц.
Transformation (Hash) - указывает на то, что база данных выполняет какую-то трансформацию данных с использованием хеш-функции. Это может быть частью более сложных операций выполнения запроса.
Nested Loops - означает, что база данных использует вложенные циклы для выполнения соединения таблиц. Это может быть эффективным для небольших таблиц, но не очень эффективным для больших таблиц.