TGViewer
Channel Public Channel
SQL Ready | Базы Данных

SQL Ready | Базы Данных

@sql_ready

Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Cотрудничество: @energy_c

РКН: https://clck.ru/3QREBc
Subscribers
17.5K
Photos
1.4K
Videos
114
Links
765

Showing posts older than #1428 · Back to latest

Older Posts 11 shown
Post #1426 2.22K
  • 😁 31
  • 👍 6
  • 🔥 3
  • ❤ 1
Post #1425 2.15K
  • 👍 11
  • 🔥 9
  • ❤ 8
  • 🤝 1
Post #1424 2.14K
  • 👍 12
  • ❤ 7
  • 🔥 7
  • 🤝 1
Post #1422 2.67K
💅 SQLTutorial — шпаргалка, которая реально пригодиться!

Хочешь быстро вспомнить команды для запросов, объединений таблиц или операций с данными? На этом сайте найдёшь множество готовых подсказок. Отлично подойдёт, если учишь SQL, готовишься к собесу или просто не хочешь каждый раз гуглить синтаксис.

📌 Оставляю ссылочку: sqltutorial.org

➡️ SQL Ready | #ресурс
  • 👍 14
  • ❤ 8
  • 🔥 7
Post #1421 2.33K
UNNEST + WITH ORDINALITY — управляемая распаковка массивов в PostgreSQL!

Обычный UNNEST() не сохраняет позицию элемента, что критично, когда важен порядок: восстановление списков, сортировка, работа с JSON-массивами.

В PostgreSQL есть решение — WITH ORDINALITY. Оно добавляет индекс элемента прямо при распаковке.

Пример: распакуем массив ингредиентов с сохранением порядка:
SELECT recipe_id, ingredient, ord
FROM recipes,
UNNEST(ingredients) WITH ORDINALITY AS t(ingredient, ord);


В отличие от обычного UNNEST(), здесь мы сразу получаем порядковый номер — без оконных функций и без дополнительных JOIN.

Соберём обратно отсортированный список:
SELECT recipe_id,
STRING_AGG(ingredient, ', ' ORDER BY ord) AS ordered_list
FROM (
SELECT recipe_id, ingredient, ord
FROM recipes,
UNNEST(ingredients) WITH ORDINALITY t(ingredient, ord)
) q
GROUP BY recipe_id;


Работа с JSON-массивами:
SELECT order_id,
item ->> 'name' AS name,
item ->> 'price' AS price,
ord
FROM orders,
jsonb_array_elements(items) WITH ORDINALITY AS t(item, ord);


🔥 Используйте WITH ORDINALITY в PostgreSQL, когда критична позиция элемента в массиве или JSON-списке.

➡️ SQL Ready | #практика
  • 👍 12
  • ❤ 8
  • 🔥 7
Post #1419 2.25K
  • 👍 17
  • 🤝 8
  • 🔥 6
  • ❤ 1
Post #1414 2.42K
🖥 Функции для работы с датой и временем в MySQL!

В этой шпаргалке собраны функции MySQL, применяемые для получения отдельных компонентов даты и времени: года, месяца, дня, часов, минут, секунд, номера недели и дня недели. Эти операции используются в большинстве рабочих запросов — от фильтрации и группировки данных до подготовки отчётов и временной аналитики.

➡️ SQL Ready | #шпора
  • 👍 20
  • 🤝 9
  • ❤ 7
Post #1412 2.13K
Нужно получить список всех дней, даже тех, которых нет в таблице?

Например, показать дни без заказов. PostgreSQL умеет генерировать последовательности прямо в запросе:
SELECT * 
FROM generate_series('2025-01-01', '2025-01-31', interval '1 day');


generate_series() создаёт виртуальную таблицу с шагом по дате.
Никаких временных таблиц, никаких циклов.

Теперь можно объединить это с данными:
SELECT g.day, COUNT(o.id) AS total
FROM generate_series('2025-01-01', '2025-01-31', interval '1 day') AS g(day)
LEFT JOIN orders o ON date(o.created_at) = g.day
GROUP BY g.day
ORDER BY g.day;


🔥 Пригодится для аналитики временных рядов,
заполнения пропусков и построения отчётов!

➡️ SQL Ready | #совет
  • 🤝 14
  • ❤ 9
  • 👍 7
  • 🔥 1
Post #1406 2.18K
🖥 Находим маршруты с пересадками (мини-навигация в базе)

Соберём все возможные маршруты из аэропорта A в B — прямые, через одну пересадку и через две, без рекурсий и сложных конструкций.

В этом посте:
• Проверим, существует ли прямой путь, простой случай, но часто самый важный;

• Расширим поиск и найдём маршруты вида A => X => B, где X — автоматически вычисленная пересадка;

• Построим цепочки A => X => Y => B, что по сути является маленьким обходом графа.


Это базовая техника работы с графами, подходит для поиска зависимостей, цепочек действий и любых последовательностей.

➡️ SQL Ready | #задача
  • 🔥 21
  • ❤ 8
  • 👍 8
  • 🤝 1
Post #1404 2.36K
Сгенерированные колонки в PostgreSQL: ускоряем фильтры без лишних вычислений!

Когда одно и то же выражение постоянно считается в WHERE, запросы тормозят. В PostgreSQL это решается GENERATED ALWAYS AS … STORED — выражение вычисляется один раз и хранится как обычное поле.

Создаём таблицу с материализованным выражением:
CREATE TABLE events (
id BIGSERIAL PRIMARY KEY,
payload JSONB NOT NULL,
event_type TEXT GENERATED ALWAYS AS (payload->>'type') STORED
);


Теперь event_type больше не вычисляется на лету — значение лежит прямо в строке.

Фильтрация становится проще и быстрее:
SELECT id
FROM events
WHERE event_type = 'purchase';


Добавляем индекс:
CREATE INDEX idx_events_event_type
ON events(event_type);


Проверяем:
EXPLAIN ANALYZE
SELECT id
FROM events
WHERE event_type = 'purchase';


🔥 Должен быть Index Scan, без тяжёлых операций над JSONB. Сгенерированные колонки отлично подходят для повторяющихся вычислений:

➡️ SQL Ready | #практика
  • 🔥 15
  • 👍 10
  • ❤ 7
Post #1399 2.52K
🖥 Очередь без конфликтов!

SKIP LOCKED позволяет управлять конкурентным доступом на уровне строки, а не всей таблицы, поэтому воркеры не ждут друг друга и не создают лишних блокировок.

Сегодня в гайде:
• Забираем задачи параллельно и без конфликтов;

• Делаем атомарный “взять + обновить” в одном запросе;

• Распределяем очереди между воркерами под высокой нагрузкой.


Этот прием делает обработку задач масштабируемой даже при высоком параллелизме.

➡️ SQL Ready | #гайд
  • 🔥 19
  • ❤ 11
  • 👍 6
  • 🤝 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →