PostgreSQL в «Тензоре» — публикации за год (#4)
Под занавес уходящего года предлагаю традиционно вспомнить, про какие интересные возможности и особенности работы с PostgreSQL мы рассказали в нашем блоге.
Если не видели дайджест за прошлый год — время наверстать упущенное!
Курс «PostgreSQL для начинающих»
Мы начали публикацию лекций курса для тех, кто только-только начинает изучать PostgreSQL.
19.12 — #2 — Простые SELECT (+10, *103)
12.12 — #1 — Основы SQL (+33, *249)
Анализ запросов в PostgreSQL
Как мы анализируем планы запросов, чтобы сделать их максимально быстрыми.
31.07 — Всегда ли хорош Index Only Scan? (+25, *65)
Разбираемся, как конкретно работает IOS в PostgreSQL, и почему панацеей он не является.
SQL Antipatterns и оптимизация SQL
Как поправить наиболее частые ошибки разработчиков при работе с базой.
02.11 — ходим по JSON-граблям (+26, *91)
Как можно легко «убить» производительность запроса неэффективной работой с JSON-значениями, и как это поправить.
13.01 — Индиана Джонс и максимальное значение ключа, или В поисках «последних» записей (+20, *77)
Как [не]эффективно можно найти последний заказ по определенному набору клиентов. Или любую другую «последнюю» запись по известной координате.
SQL HowTo
Учимся писать нетривиальные SQL-запросы для решения прикладных задач.
20.12 — итоги по строкам и столбцам «в одно действие» (+26, *93)
Пробуем варианты с использованием REPEATABLE READ, временных таблиц, CTE, UNION ALL и GROUPING SETS для хорошего решения типовой бизнес-задачи.
28.11 — TOP-N на субинтервалах (+11, *42)
Учимся эффективно искать «топовые» значения на каждом дне, месяце, квартале интервала.
13.09 — ближайший общий предок в дереве (LCA) (+13, *41)
Собираем на SQL разные варианты реализации одного из алгоритмов на графах и узнаем некоторые удобные возможности этого языка. (видео)
11.05 — замена в строке по набору (+9, *28)
Пишем на SQL аналог str_replace или strtr.
21.02 — крупицы золота в реестре (+18, *67)
Как заставить PostgreSQL перебрать максимум записей со сложной неиндексируемой фильтрацией за ограниченное время, чтобы не заставлять пользователя ждать «крутилки» в интерфейсе.