В этой шпаргалке — функции PostGIS для пространственного анализа: вычисление расстояний и площадей, определение пересечений и вложенности геометрий, создание буферов и экспорт в GeoJSON. Эти инструменты полноценной ГИС-платформой для хранения, обработки и анализа геоданных.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥8❤6
Covering Index — как реально ускорить SELECT!
Даже с индексом СУБД может работать медленно — после поиска всё равно нужно обращаться к таблице за данными.
Если запрос обращается только к колонкам, включённым в индекс — таблица может не читаться вовсе:
Теперь запрос:
Выполняется полностью из индекса — минимум I/O, максимум скорости.
В PostgreSQL это видно как
Работает только если строки помечены
🔥 Не забывайте: больше индексов = больше места и медленнее вставки/обновления.
➡️ SQL Ready | #совет
Даже с индексом СУБД может работать медленно — после поиска всё равно нужно обращаться к таблице за данными.
Covering Index — это индекс, который уже содержит все данные, нужные запросу.Если запрос обращается только к колонкам, включённым в индекс — таблица может не читаться вовсе:
CREATE INDEX idx_orders_status_user
ON orders (status, user_id);
Теперь запрос:
SELECT user_id, status
FROM orders
WHERE status = 'pending';
Выполняется полностью из индекса — минимум I/O, максимум скорости.
В PostgreSQL это видно как
Index Only Scan в плане:EXPLAIN ANALYZE SELECT ...
Работает только если строки помечены
all-visible (visibility map). В MySQL аналог — Using index, в SQL Server — INCLUDE в индексе. 🔥 Не забывайте: больше индексов = больше места и медленнее вставки/обновления.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍9🤝7🔥3
Когда: 25–28 ноября
Формат: онлайн + финал на площадке
Участвуй, если ты:
Выбери свой кейс:
✴️ VibeCode Jam: собеседование будущего. Создай ИИ-платформу для прохождения технических собеседований с виртуальным интервьюером.✴️ Self-Deploy: CI/CD без DevOps. Автоматизируй генерацию CI/CD пайплайнов по анализу структуры Git-репозитория.
Почему стоит участвовать:
Регистрация открыта!
Реклама. ООО "ГК "Иннотех" ИНН 9703073496 ERID 2VtzqxXvjVG
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1
Сегодня создаём небольшой симулятор: база данных загадывает число от 1 до 10, а игрок пытается его угадать тысячу раз.
В этом посте:
• Генерируем данные через GENERATE_SERIES() и RANDOM();
• Проверяем, сколько попыток оказались успешными;
• Анализируем распределение “удачных” чисел по всем догадкам.
Игра помогает тестировать генераторы случайных значений, проверять равномерность распределений и моделировать тесты.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍6❤4🤝4
This media is not supported in your browser
VIEW IN TELEGRAM
Если работаешь с базами и хочешь понимать, как Postgres устроен изнутри, этот сайт точно стоит внимания. Здесь подробно объясняется, как хранятся данные, работают индексы, транзакции и репликация. Всё показано на схемах и описано простым языком.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥7🤝6
RANK vs DENSE_RANK: точное ранжирование в SQL!
При создании рейтингов или аналитических сводок часто нужно определить позиции записей по показателю — с учётом повторов. Для этого используются оконные функции
Создадим таблицу с продажами:
Выполним ранжирование по сумме продаж:
Результат:
🔥 Так что,
➡️ SQL Ready | #практика
При создании рейтингов или аналитических сводок часто нужно определить позиции записей по показателю — с учётом повторов. Для этого используются оконные функции
RANK() и DENSE_RANK().Создадим таблицу с продажами:
CREATE TABLE sales (
employee TEXT,
total_sales INT
);
INSERT INTO sales VALUES
('Alice', 500),
('Bob', 700),
('Charlie', 700),
('Diana', 400);
Выполним ранжирование по сумме продаж:
SELECT employee,
total_sales,
RANK() OVER (ORDER BY total_sales DESC) AS rank_pos,
DENSE_RANK() OVER (ORDER BY total_sales DESC) AS dense_rank_pos
FROM sales;
Результат:
employee | total_sales | rank_pos | dense_rank_pos
---------+--------------+----------+----------------
Bob | 700 | 1 | 1
Charlie | 700 | 1 | 1
Alice | 500 | 3 | 2
Diana | 400 | 4 | 3
🔥 Так что,
RANK() пропускает позиции после повторов, а DENSE_RANK() идёт подряд, без «дыр» в нумерации.Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥10❤8🤝1
🔥13❤7👍7👎3
Партиционирование позволяет разбить данные по логике (дата, регион, тип) и ускорить работу без сложных трюков.
Сегодня в посте:
• Как создать таблицу с RANGE-партициями;
• Почему фильтры по ключу в разы ускоряют SELECT;
• Как безопасно удалять старые данные за миллисекунды.
Это инструмент архитектуры, а не оптимизации, если он внедрён правильно таблица работает быстро.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍7🔥7🤝5
Ускоряй отчёты с материализованными представлениями!
Когда отчёты считаются минутами, а данные почти не меняются, решение может быть в кэшировании результата.
Используй материализованное представление (как
Обновлять можно вручную или по расписанию (
А если нужно без блокировок чтения:
🔥 Помни:
➡️ SQL Ready | #совет
Когда отчёты считаются минутами, а данные почти не меняются, решение может быть в кэшировании результата.
Используй материализованное представление (как
VIEW, но результат хранится физически в таблице):CREATE MATERIALIZED VIEW daily_stats AS
SELECT date(created_at) AS day,
COUNT(*) AS total_orders
FROM orders
GROUP BY 1;
CREATE UNIQUE INDEX ON daily_stats(day); -- нужно для CONCURRENTLY
Обновлять можно вручную или по расписанию (
cron, pg_cron):REFRESH MATERIALIZED VIEW_stats;
А если нужно без блокировок чтения:
REFRESH MATERIALIZED VIEW CONCURRENTLY daily_stats;
🔥 Помни:
concurrently медленнее и требует индекс, но позволяет читать данные во время обновления.Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍8🔥8🤝1
Сегодня создаём модель, в которой SQL решает судьбу каждой клетки — кто выживет, кто родится, а кто исчезнет.
В этом посте:
• Считаем количество живых соседей для каждой клетки;
• Применяем правила “жизни” и получаем следующее поколение;
• Наблюдаем, как база данных буквально оживает на глазах.
Такой приём демонстрирует, что SQL может быть не только инструментом аналитики, но и полноценной средой моделирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍9❤6🤝1