This media is not supported in your browser
VIEW IN TELEGRAM
pgcli — интерфейс командной строки для PostgreSQL
Его главные особенности — автодополнение и подсветка синтаксиса. Это позволяет упростить взаимодействие с базами данных.
Есть аналог для MySQL.
⛓ Ссылка: тык
👉 @SQLPortal
Его главные особенности — автодополнение и подсветка синтаксиса. Это позволяет упростить взаимодействие с базами данных.
Есть аналог для MySQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Сравнение с предыдущим. Решение.
Решение: использование
Если сформулировать обычным языком следующий запрос, то окажется, что он выражает следующую идею: нужно выбрать такие идентификаторы, чтобы температура, соответствующая представляемым ими датам, была бы больше, чем температура на «вчерашние» по отношению к ним даты.
👉 @SQLPortal
Решение: использование
DATEDIFF
DATEDIFF: эта функция вычисляет разницу между двумя датами. Она используется для того, чтобы обеспечить сравнение именно «сегодняшних» и «вчерашних» температур.Если сформулировать обычным языком следующий запрос, то окажется, что он выражает следующую идею: нужно выбрать такие идентификаторы, чтобы температура, соответствующая представляемым ими датам, была бы больше, чем температура на «вчерашние» по отношению к ним даты.
SELECT DISTINCT a.Id
FROM Weather a, Weather b
WHERE a.Temperature > b.Temperature
AND DATEDIFF(a.Recorddate, b.Recorddate) = 1
Please open Telegram to view this post
VIEW IN TELEGRAM
Вы можете использовать
...за исключением случая:
Почему так?
поэтому доступны только те столбцы, что явно указаны в
Объяснение от Lukas Eder — blog.jooq.org
👉 @SQLPortal
ORDER BY по столбцам, которых нет в SELECT-списке запроса....за исключением случая:
SELECT DISTINCT this FROM t ORDER BY that -- некорректно!
Почему так?
DISTINCT удаляет дубликаты из выбранных значений и формирует новую таблицу,поэтому доступны только те столбцы, что явно указаны в
SELECTОбъяснение от Lukas Eder — blog.jooq.org
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
SQL-приём, о котором мало кто знает
Знал ли ты, что внутри транзакции можно создавать контрольные точки с помощью SAVEPOINT? Вместо сценария, где при ошибке теряется вся работа.
SAVEPOINT позволяет зафиксировать точку внутри транзакции, к которой можно откатиться. Обычный откат отменяет всю транзакцию, а откат к SAVEPOINT возвращает состояние только до этой точки.
SAVEPOINT — это как контрольные точки в трубопроводе. Если проблема возникает дальше по потоку, можно локализовать последствия, вернувшись к последней стабильной точке, не останавливая всю систему.
Следующий код откатывает всё:
Если добавить SAVEPOINT, можно откатиться только к последней контрольной точке:
SAVEPOINT полезен, когда стоимость полного отката слишком высокая и выгоднее переиграть только часть транзакции. Даёт более гибкое управление транзакциями, особенно в сложных сценариях.
SAVEPOINT не устраняет ошибку, а ограничивает её последствия.
👉 @SQLPortal
Знал ли ты, что внутри транзакции можно создавать контрольные точки с помощью SAVEPOINT? Вместо сценария, где при ошибке теряется вся работа.
SAVEPOINT позволяет зафиксировать точку внутри транзакции, к которой можно откатиться. Обычный откат отменяет всю транзакцию, а откат к SAVEPOINT возвращает состояние только до этой точки.
SAVEPOINT — это как контрольные точки в трубопроводе. Если проблема возникает дальше по потоку, можно локализовать последствия, вернувшись к последней стабильной точке, не останавливая всю систему.
Следующий код откатывает всё:
BEGIN;
INSERT INTO orders VALUES (1, 'Laptop');
INSERT INTO payments VALUES (1, 'FAILED');
-- Здесь что-то пошло не так
ROLLBACK; -- Удалит И заказ, И платёж
Если добавить SAVEPOINT, можно откатиться только к последней контрольной точке:
BEGIN;
INSERT INTO orders VALUES (1, 'Laptop');
-- Создаём контрольную точку
SAVEPOINT before_payment;
INSERT INTO payments VALUES (1, 'FAILED');
-- Платёж не прошёл — откатываем только его
ROLLBACK TO SAVEPOINT before_payment;
-- Пробуем альтернативный способ оплаты
INSERT INTO payments VALUES (1, 'SUCCESS');
COMMIT;
SAVEPOINT полезен, когда стоимость полного отката слишком высокая и выгоднее переиграть только часть транзакции. Даёт более гибкое управление транзакциями, особенно в сложных сценариях.
SAVEPOINT не устраняет ошибку, а ограничивает её последствия.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Нужно быстро выгрузить данные?
Кейсы:
- Быстрый экспорт выборки без поднятия отдельного пайплайна или воркфлоу.
- Выгрузка данных для аналитики в CSV с последующей обработкой в pandas/BI.
- Отладка: снятие среза таблицы для локального воспроизведения бага.
- Миграции: подготовка данных перед переносом между окружениями.
- Интеграции: передача данных в сторонние системы через файл.
- Бэкап части данных по фильтру (например, последние 7 дней).
- Проверка гипотез: выгрузка подвыборки без нагрузки на основную систему.
👉 @SQLPortal
\copy записывает результат любого запроса в локальный файл.\copy (SELECT * FROM users WHERE created_at > now() - interval '7 days') TO '~/new_users.csv' WITH CSV HEADER
Кейсы:
- Быстрый экспорт выборки без поднятия отдельного пайплайна или воркфлоу.
- Выгрузка данных для аналитики в CSV с последующей обработкой в pandas/BI.
- Отладка: снятие среза таблицы для локального воспроизведения бага.
- Миграции: подготовка данных перед переносом между окружениями.
- Интеграции: передача данных в сторонние системы через файл.
- Бэкап части данных по фильтру (например, последние 7 дней).
- Проверка гипотез: выгрузка подвыборки без нагрузки на основную систему.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Для фоновых задач, таких как vacuum и создание индексов, Postgres использует специальное выделение памяти под названием
Если требуется ускорить выполнение задач, таких как:
> выполнение vacuum,
> создание индексов,
> создание индексов для материализованных представлений,
используйте:
Установите значение, которое предоставит вашим операциям больше памяти. По умолчанию используется 64MB. Этот параметр можно задать как глобально на уровне системы, так и локально для одной сессии.
👉 @SQLPortal
maintenance_work_mem. Обычные запросы используют work_mem, чтобы определить, сколько памяти может быть выделено на одну операцию или соединение.Если требуется ускорить выполнение задач, таких как:
> выполнение vacuum,
> создание индексов,
> создание индексов для материализованных представлений,
используйте:
SET maintenance_work_mem = '8GB';
Установите значение, которое предоставит вашим операциям больше памяти. По умолчанию используется 64MB. Этот параметр можно задать как глобально на уровне системы, так и локально для одной сессии.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Обе модели
• Обучены с нуля — без инициализации зарубежными весами
• MoE + MTP + MLA
• Совместимы с HuggingFace, llama.cpp / vLLM / SGLang
Код и веса уже на платформе GitVerse.
Это не просто релиз весов, а результат большой инженерной работы над качеством, alignment и стабильностью модели. В блоге команда поделилась результатами и своими наработками.
В релизе: высокие результаты на аренах, улучшенный function calling, решённая проблема циклов, DPO в нативном FP8, найденный и зарепорченный баг в SGLang при dp > 1.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Понимание порядка выполнения SQL-запроса критично для написания корректных и оптимизированных запросов.
Запомни последовательность: FROM и JOIN, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, затем LIMIT.
Освоение этого порядка ускоряет отладку и помогает мыслить как СУБД. #SQL #DataAnalytics #LearnSQL #Database
👉 @SQLPortal
Запомни последовательность: FROM и JOIN, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, затем LIMIT.
Освоение этого порядка ускоряет отладку и помогает мыслить как СУБД. #SQL #DataAnalytics #LearnSQL #Database
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3😁1
Сегодня мы изучим импорт и экспорт данных в SQL:
SQL предоставляет механизмы для импорта данных в базу данных и экспорта их во внешние файлы.
Импорт данных:
Использование команды INSERT INTO SELECT для импорта данных из одной таблицы в другую:
Экспорт данных:
Использование команды SELECT INTO OUTFILE для экспорта данных в файл:
Эти операции полезны для:
🔻 Переноса данных между базами данных.
🔻 Архивации данных.
🔻 Обмена информацией с другими системами.
👉 @SQLPortal
SQL предоставляет механизмы для импорта данных в базу данных и экспорта их во внешние файлы.
Импорт данных:
Использование команды INSERT INTO SELECT для импорта данных из одной таблицы в другую:
INSERT INTO destination_table (column1, column2)
SELECT column3, column4 FROM source_table;
Экспорт данных:
Использование команды SELECT INTO OUTFILE для экспорта данных в файл:
SELECT column1, column2 INTO OUTFILE 'file_path.csv'
FIELDS TERMINATED BY ',' FROM table_name;
Эти операции полезны для:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Нужна быстрая задержка в скрипте или тесте?
SELECT pg_sleep(2); -- 2 секунды
SELECT pg_sleep(0.5); -- полсекунды
SELECT pg_sleep_for('5 minutes'); -- самодокументируемо
Удобно для симуляции медленных запросов, тестирования таймаутов или просто чтобы добавить драматизма в демо.
👉 @SQLPortal
SELECT pg_sleep(2); -- 2 секунды
SELECT pg_sleep(0.5); -- полсекунды
SELECT pg_sleep_for('5 minutes'); -- самодокументируемо
Удобно для симуляции медленных запросов, тестирования таймаутов или просто чтобы добавить драматизма в демо.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1😁1
Шпаргалка для изучения SQL и NoSQL баз данных
Выбор правильной базы данных имеет решающее значение для успеха проекта:
⏩ Базы данных SQL предлагают структурированное хранилище данных, поддержку SQL и реляционной модели
⏩ Базы данных NoSQL обеспечивают гибкость, масштабируемость и распределенную архитектуру
⏩ Специализированные базы данных, такие как столбчатые, графовые, пространственные и базы данных временных рядов, удовлетворяют конкретные потребности
👉 @SQLPortal
Выбор правильной базы данных имеет решающее значение для успеха проекта:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁1
This media is not supported in your browser
VIEW IN TELEGRAM
NocoDB — превращает любой MySQL, PostgreSQL, SQL Server, SQLite и MariaDB в интеллектуальную электронную таблицу.
⛓ Ссылка: тык
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
Media is too big
VIEW IN TELEGRAM
Здесь вы найдете практические примеры и задания по SQL, предназначенные для обучения и отработки навыков работы с базами данных.
⛓ Ссылка: тык
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Образовательный сайт для обучения и практики SQL-запросов, предлагающий задачи и проверки в реальном времени.
⛓ Ссылка: тык
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
В PostgreSQL есть специальный параметр для логирования долго выполняющихся запросов —
После установки этого параметра PostgreSQL будет записывать в лог длительность и текст запроса, если он выполняется дольше указанного времени.
Это полезно для того, чтобы:
> определить, какие запросы работают медленно;
> понять, где можно добавить индексы для повышения производительности.
Параметр можно задать и на уровне сессии, если нужно логировать (или, наоборот, исключить из логирования) только конкретные запросы:
👉 @SQLPortal
log_min_duration_statement.После установки этого параметра PostgreSQL будет записывать в лог длительность и текст запроса, если он выполняется дольше указанного времени.
ALTER DATABASE postgres SET log_min_duration_statement = '500ms';
Это полезно для того, чтобы:
> определить, какие запросы работают медленно;
> понять, где можно добавить индексы для повышения производительности.
Параметр можно задать и на уровне сессии, если нужно логировать (или, наоборот, исключить из логирования) только конкретные запросы:
SET log_min_duration_statement = '20000ms';
log_min_duration_statement — действительно мощный инструмент, но мы обычно не рекомендуем устанавливать его на очень низкие значения (0, 1 или 5 мс), так как это приведёт к логированию практически всех операций базы данных. Это создаст шум в логах и может занять много места на диске.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤1👍1😁1
Не пиши SELECT DISTINCT, если проблему создаёт плохой JOIN
Частая ошибка - сначала размножают строки джойном, потом сверху лечат это DISTINCT. Это дорого и часто убивает план.
Плохо:
Лучше так:
DISTINCT часто добавляет sort или hash aggregation на огромном объёме.
EXISTS превращает задачу в semijoin:
• оптимизатору проще остановиться на первом совпадении
• меньше памяти, меньше лишних строк, стабильнее план
Это один из тех рефакторингов, который на больших таблицах реально даёт заметный буст.
👉 @SQLPortal
Частая ошибка - сначала размножают строки джойном, потом сверху лечат это DISTINCT. Это дорого и часто убивает план.
Плохо:
SELECT DISTINCT u.id, u.name
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE o.created_at >= CURRENT_DATE - INTERVAL '30 days';
Лучше так:
SELECT u.id, u.name
FROM users u
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.user_id = u.id
AND o.created_at >= CURRENT_DATE - INTERVAL '30 days'
);
DISTINCT часто добавляет sort или hash aggregation на огромном объёме.
EXISTS превращает задачу в semijoin:
• оптимизатору проще остановиться на первом совпадении
• меньше памяти, меньше лишних строк, стабильнее план
Это один из тех рефакторингов, который на больших таблицах реально даёт заметный буст.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
До сих пор разворачиваете PostgreSQL вручную?
Сэкономьте силы для задач разработки.
21 апреля в 16:00 (мск) пройдёт вебинар от MWS Cloud Platform, где эксперты компании расскажут, как получить готовую базу для бэкенда за несколько минут.
Что будет в эфире:
⚫️ ️️ облачный PostgreSQL: плюсы/минусы решения;
⚫️ ️️ как устроен управляемый сервис в новом облаке от MWS Cloud;
⚫️ ️️ машинерия под капотом бэкапов, автообновлений, switch и failover;
⚫️ ️️ создадим кластер за несколько минут и настроим подключение.
Вебинар будет интересен администраторам баз данных (DBA), бэкенд-разработчикам, DevOps- и SRE-инженерам, техническим лидам и архитекторам, владельцам продуктов и стартапам.
Зарегистрироваться
Сэкономьте силы для задач разработки.
21 апреля в 16:00 (мск) пройдёт вебинар от MWS Cloud Platform, где эксперты компании расскажут, как получить готовую базу для бэкенда за несколько минут.
Что будет в эфире:
Вебинар будет интересен администраторам баз данных (DBA), бэкенд-разработчикам, DevOps- и SRE-инженерам, техническим лидам и архитекторам, владельцам продуктов и стартапам.
Зарегистрироваться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
Совет для аналитиков данных;
Если проект в твоём портфолио почти не показывает, как он сэкономил компании деньги или время, с вероятностью 99% он никого не впечатлит.
Менеджеры редко хотят слушать про то, как ты считал R-квадрат. Им важно понять, как твой проект помогает зарабатывать больше денег.
👉 @SQLPortal
Если проект в твоём портфолио почти не показывает, как он сэкономил компании деньги или время, с вероятностью 99% он никого не впечатлит.
Менеджеры редко хотят слушать про то, как ты считал R-квадрат. Им важно понять, как твой проект помогает зарабатывать больше денег.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3