Временные таблицы в SQL обеспечивают удобный способ разбиения сложных задач на более мелкие и управляемые. Они позволяют разделить этапы обработки данных, что может повысить производительность, улучшить читаемость кода и упростить логику запросов.
CREATE TABLE
с ключевым словом TEMPORARY
или TEMP
перед именем таблицы:CREATE TEMPORARY TABLE temp_table (
id INT,
name VARCHAR(50),
age INT
);
Что тут происходит:
— Инструкция
CREATE TEMPORARY TABLE
используется для создания временной таблицы.—
temp_table
— это имя, которое присваивается временной таблице. Имя можно выбрать любое.— Внутри круглых скобок мы определяем столбцы временной таблицы.
— В данном примере временная таблица
temp_table
имеет три столбца: id
типа INT
, name
типа VARCHAR(50)
и age
типа INT
.— При необходимости мы можем добавить дополнительные столбцы, указав их имена и типы данных.
— Временная таблица автоматически удаляется в конце сеанса или при завершении сеанса.
Допустим, у нас есть большой набор данных, и мы хотим выполнить сложный анализ или вычисления на меньшей части этих данных. Для такого анализа можно создать временную таблицу, содержащую только необходимые строки и столбцы.
-- Создать временную таблицу с подмножеством данных
CREATE TEMPORARY TABLE subset_data AS
SELECT column1, column2, column3
FROM original_table
WHERE condition;
-- Анализ подмножества данных
SELECT column1, AVG(column2) AS average_value
FROM subset_data
GROUP BY column1;
-- Удалить временную таблицу
DROP TABLE subset_data;
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍9🔥3
💎 Квантизация нейросетевых моделей
Интересная статья, в которой ML-разработчик Яндекса рассказывает, что такое квантизация и как она помогает экономить ресурсы, разбирает типы данных и объясняет, что квантизовать, чтобы улучшить эффективность модели.
Автор также рассказывает, что такое выбросы, как они портят жизнь ML-инженерам, а также как с ними бороться.
📎 Статья
@sqlhub
Интересная статья, в которой ML-разработчик Яндекса рассказывает, что такое квантизация и как она помогает экономить ресурсы, разбирает типы данных и объясняет, что квантизовать, чтобы улучшить эффективность модели.
Автор также рассказывает, что такое выбросы, как они портят жизнь ML-инженерам, а также как с ними бороться.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3😁2🔥1
В статье показано, как с помощью matching в Oracle #SQL найти серию последовательных строк с начальной даты и до конечной:
MATCH_RECOGNIZE (
...
PATTERN (str e+)
DEFINE e AS start_date = PREV(end_date) + 1 --start is 1 day after previous end
)
https://how2ora-en.blogspot.com/2023/01/how-to-check-if-row-is-continuation-of.html@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥2
Скажем, вам необходимо реализовать систему рассылки пуш-уведомлений на android-устройства клиентов. Вы пишете сервис, который будет работать с FCM. Пишете функции в вашей БД, которые будут выдавать списки token-текст (да там много полей вообще).
Так вот, необходимо, чтобы такие ручки для разных модулей (бэкендов) лежали в отдельных схемах.
Предположим, что вы реализовали пункт выше, теперь ваш сервис должен подключаться к БД и крутить свои запросы. Но под каким пользователем? Не будет же он бегать под
postgres
или admin
?)PostgreSQL — это мощная СУБД. Но и она не может быть универсальной. Не надо полагать, что всё делается штатными средствами PostgreSQL. Так-же не надо пробовать писать свои системы чего-либо.
Возьмите за привычку в БД всегда хранить
timestampTZ
и когда-нибудь Вам скажут большое спасибо за это.Так-же рекомендую сразу установить расширения для мониторинга запросов (например
pg_stat_statements
)PostgreSQL всегда временные таблицы кладёт на диск, это займёт много времени. Используйте табличные выражения. Да и лучше всё писать одним оператором.
Да да, секции — это круто. Но вот их использовать я бы рекомендовал только в некоторых случаях
Да, когда планировщик не так представляет выхлоп — у вас могут получиться очень медленные запросы.
Наверное сразу стоит добавить и тот пункт, что не надо хранить в
TOAST
( например json/text
с дефолтным параметром хранения ) аналитические данные.@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤5🔥1🤔1
Функции, которые вы ожидаете от IDE, работают прямо в вашем терминале". Среди этих функций:
- Каталог данных: просмотр таблиц, столбцов и их типов.
- Редактор запросов.
- Окно для отображения результатов (возможность вывода 1M+ записей).
- Экспорт результатов и история запросов.
▪Github
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤2🔥2🤔2🥰1
— Внутри базы создается отдельный счетчик, который привязывается к каждой таблице
— Счетчик увеличивается на единицу при вставке новой строки
— Получившееся значение записывается в поле, которое помечается как автогенерируемое
++
.GENERATED AS IDENTITY
:CREATE TABLE colors (
-- Одновременное использование и первичного ключа и автогенерации
id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
name varchar(255)
);
INSERT INTO colors (name) VALUES ('Red'), ('Blue');
SELECT * FROM colors;
-- id name
-- 1 Red
-- 2 Blue
Если удалить запись с
id
равным двум и вставить еще одну запись, то значением поля id
будет 3
. Автогенерация не связана с данными в таблице. Это отдельный счетчик, который всегда увеличивается. Так избегаются вероятные коллизии и ошибки, когда один и тот же идентификатор принадлежит сначала одной записи, а потом другой.column_name type GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY[ ( sequence_option ) ]
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥5👍2👎2🥰2
Отличная статья, в которой обсуждаются:
UNION
, INTERSECT
, EXCEPT
)Common Table Expression
, CTE (WITH)
WINDOW
/ OVER
)GROUP BY
)FROM
)JOIN
) и выражения подзапросов@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤5🔥3🎉1
Неплохая статья, в которой рассматривается пример создания DDL лога в PostgreSQL – это своего рода журнал DDL операций.
Подробно описывается, как реализовывать DDL лог с помощью триггеров событий.
Структура статьи
— Типы событий
— Команды DDL, на которые срабатывают триггеры событий
— Функции для триггеров событий
— Функции для получения информации в событийных триггерах
— Команда CREATE EVENT TRIGGER
— Таблица для хранения информации
— Функция, которая будет вызываться при наступлении события
— Создание событийных триггеров
— Пример работы DDL лога
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Вы можете присваивать столбцу значение по УМОЛЧАНИЮ при добавлении или изменении строк с помощью ключевого слова DEFAULT
#SQL #ORACLE
@sqlhub
INSERT INTO ... VALUES ( DEFAULT, ... )
UPDATE ... SET ... = DEFAULT
#SQL #ORACLE
@sqlhub
👍25❤5🔥2
Особенности работы комманды в других версиях указаны в сноске*.
Команды установки приведены для Ubuntu 20.04, но работать будут практически аналогично и в других средах.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍4❤2