Это видео недоступно.
Сожалеем об этом.
Как ускорять SQL запросы? Explain и оптимизация запросов SQL
HTML-код
- Опубликовано: 17 авг 2024
- База знаний по разработке в telegram t.me/lets_goto_it
00:00 Что такое Explain в базах данных?
00:38 Первый пример explain с JOIN
02:18 Делаем базе больно - добавляем 5 млн записей
04:00 Добавляем тестовые связи
05:10 Второй пример с последовательным сканированием (Sec Scan)
06:30 Оптимизация через добавление индексов
11:15 Оптимизация через LEFT JOIN LATERAL
14:52 Оптимизация через CTE и JOIN
17:30 Оптимизация через покрывающий индекс
19:28 Оптимизация через составной индекс на таблицу связей
21:18 Делаем данные более реальными
24:30 Важность ANALYZE table для плана SQL запроса
25:00 Смотрим планы запросов после уменьшения количества записей с active
27:53 Смотрим доку про EXPLAIN
28:40 Пробуем добавить еще фильтры
Смотрим план медленного запроса в #postgresql через explain и разбираем несколько вариантов для его оптимизации - добавляем индексы, переписываем запрос несколько раз разными вариантами и проникаемся проблемами )
---
Explain - www.postgrespr...
Покрывающие индексы - postgrespro.ru...
---
Понравился ролик?
Ставь лайк, а можешь поддержать канал рублем - vk.cc/cu1oD4
---
Репозиторий - github.com/art...
Телеграм - t.me/lets_goto_it
Дзен - dzen.ru/lets_g...
это просто ОФИГЕННО!
Спасибо за видео. Коммент в поддержку!
Спасибо! Будут вопросы или предложения по теме - задавайте
Это топовое объяснение🔥
Спасибо!
хотелось про эскплейн, конечно
Как-то не сложилось у меня чтение в текстовом формате. Вы же про это? Если да, то для чего вам именно текстом? В pg admin есть пара кнопок для нормальной визуализации. Я тут только про одну рассказываю.
@@lets_goto_it хотелось про планировщик, почему индексы не всегда работают (процентаж выборки), про буферы, почему важно иметь кеш запросов, про характер выборки и первоначальную цель запроса, как с помощью EXPLAIN можно изменить понимание тог, что должен делать запрос. Даже простое объяснение отличия EXPLAIN от ANALYZE
и зачем спрашивается тебе левый джойн, если ты в условии фильтруешь по этому полю из таблицы, котороую присоеденил, нужно было ставить обычный джойн, а условие писать в джойне, а не в where, что бы не создавать мегатаблицу
Оптимизатор это давно хорошо отруливает
жаль, нет примеров с временными таблицами( например, в субд MS SQL - таблицы через #, ##
Вы про WITH Queries (Common Table Expressions), CREATE TEMPORARY TABLE или что-то иное?
@@lets_goto_it cte в видео видела, использую другую субд sql server, там есть возможность создать лок таблицы # или глобал ##, они же тоже помогают в оптимизации или отличий нет от cte в плане производительности? в Pg я так поняла редко используют таблицы типа #, ## (CREATE TEMPORARY TABLE)?
@@lets_goto_it про TEMPORARY TABLE. cte и TEMPORARY TABLE есть отличия в контексте производительности?
какой операционкой ползуетесь?
macos
MacOs с 2013-го. Начинал в 2008 на Windows, потом было много разных линуксов, потом пересел на macos и она для меня вне конкуренции теперь. Там и красиво и нормальный терминал и это все же unix-овое семейство, что чуть упрощает некоторые дела. Есть много коллег, которые на Windows работают и у них тоже все норм, ра исключением того, что не все ПО нормально под windows работает, но конкретно у них все пучком уже. На серверах только linux
@@lets_goto_itwsl используется?
Я плакал и ждал, когда автор нажмет Shif+F7, а так же увидит, что он выбирает всю таблицу, при этом ждет от слона использования индекса. лицорука
Можете указать тайминг, чтобы я проверил?
9ая минута, думаю
Спасибо за ваш коммент, я проверил - все хорошо. Это просто стиль подачи информации - от оч плохого наивного решения с разбором почему не работает до поиска лучшего решения. Собственно ровно так, как и бывает у всех в жизни. Посмотрите до 18й минуты и вы увидите все заранее подготовленные патчи и запросы - я их использую для следующих итераций оптимизации с разбором того как все же заставить базу нормально выполнять всё.