Files
digital-garden-backup/_inbox/Explain.md
2024-06-13 21:01:37 +03:00

37 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
tags:
- зрелость/🌱
date:
- - 2024-06-10
zero-link:
- "[[00 PostgreSQL]]"
parents:
- "[[Профилирование запросов в PostgreSQL]]"
linked:
---
Используя ключевое слово `EXPLAIN` перед запросом, можно получить детальную информацию о том, что делает PostgreSQL под капотом для выполнения запроса, и что это ему стоит.
Пример выполнения
```sql
postgres=# explain select * from users where id=20;
QUERY PLAN
-------------------------------------------------------
Index Scan using users_pkey on users (cost=0.15..8.17 rows=1 width=72)
Index Cond: (id = 20)
(2 rows)
```
Можно изменить формат вывода. Например, можно вывести все в JSON.
```sql
explain(format json) select * from users where id=20;
```
Explain не выполняет запрос, поэтому результаты будут лишь приблизительными. Можно улучшить качество анализа, если добавить ключевое слово `explain analyze`, тогда explain также выполнит запрос.
**Виды проходов по индексу:**
- Seq Scan - последовательный просмотр таблицы. Худший вариант.
- Index Scan - просмотр по индексу в таблице
- Index Only Scan - был использован [Покрывающий индекс](Покрывающий%20индекс.md)
- Bitmap Heap Scan - оптимизация с построением битовых карт для поиска. Сначала строятся битовые карты с использованием нескольких индексов, затем эти битовые карты комбинируются.