Skip to content

Условные DELETE и INSERT в PostgreSQL

Пересказ статьи sabyda. Conditional DELETE and INSERT in PostgreSQL


Введение


Мы уверенно чувствуем себя, вставляя/удаляя записи в/из таблицы. Но иногда испытываем затруднения, когда требуется вставлять или удалять записи из таблицы при некоторых условиях. Давайте рассмотрим пример.

Сценарий примера


Предположим, что у нас имеется таблица с именем ALL_EMPLOYEES, которая содержит всю информацию о сотрудниках, кто работает или когда либо работал в компании. Пусть у нас также есть таблица SEP_EMPLOYEES, которая содержит информацию о тех сотрудниках, кто ушел из компании. Теперь компании нужно очистить свою базу данных от информации о всех ушедших сотрудниках в таблице ALL_EMPLOYEES. В этом случае нам потребуется выполнить условное удаление из таблицы ALL_EMPLOYEES.
Continue reading "Условные DELETE и INSERT в PostgreSQL"

Плохие привычки: злоупотребление столбцами типа bit

Пересказ статьи Aaron Bertrand. Bad Habits: Abusing bit columns


Я просматриваю много кода DDL от различных команд, и часто встречаю такое:

ALTER TABLE dbo.Widgets ADD IsNotCertified bit NULL;

Когда я вижу битовый столбец, допускающий NULL-значения, то всегда спрашиваю:

Вы намеренно хотите использовать здесь трехзначную логику?
Означает ли NULL что-то отличное от 0, или весь будущий код будет использовать COALESCE, чтобы сравнивать NULL с нулем?

Continue reading "Плохие привычки: злоупотребление столбцами типа bit"

Плохие привычки: злоупотребление столбцами типа bit

Пересказ статьи Aaron Bertrand. Bad Habits: Abusing bit columns


Я просматриваю много кода DDL от различных команд, и часто встречаю такое:

ALTER TABLE dbo.Widgets ADD IsNotCertified bit NULL;

Когда я вижу битовый столбец, допускающий NULL-значения, то всегда спрашиваю:

Вы намеренно хотите использовать здесь трехзначную логику?
Означает ли NULL что-то отличное от 0, или весь будущий код будет использовать COALESCE, чтобы сравнивать NULL с нулем?

Continue reading "Плохие привычки: злоупотребление столбцами типа bit"

SQL FLOAT: 3 пункта, которые помогут избежать странных математических ошибок

Пересказ статьи Edwin Sanchez. SQL FLOAT: 3 Points that Will Help you to Avoid Weird Math Errors


Думали ли вы когда-нибудь, что SQL может ошибиться в математике? Это звучит невероятно. Однако, если вы используете тип данных FLOAT, то можете столкнуться с проблемами, которые я вам продемонстрирую.
Continue reading "SQL FLOAT: 3 пункта, которые помогут избежать странных математических ошибок"

Столбцы аудита

Пересказ статьи Kenneth Fisher. Audit Columns


Один из самых простых способов сбора информации о работе с таблицей - добавить в таблицу набор столбцов аудита. Общепринятый набор состоит из четырех столбцов.

  • Когда была создана строка?

  • Кто её создал?

  • Когда строка последний раз обновлялась?

  • Кто последним обновил её?


Continue reading "Столбцы аудита"

Есть ли польза от удаления временной таблицы в хранимой процедуре?

Пересказ статьи Chad Callihan. Is Dropping a Temp Table in a Stored Procedure Beneficial?


Вообще говоря, лучше удалять вещи, которые не используются. Не храните индексы, которые не используются, поскольку они занимают место на диске и по-прежнему поддерживаются в актуальном состоянии при изменении данных. Нужно ли хранить таблицу, которая содержит неиспользуемые устаревшие данными? Возможно, пришло время для таких вещей, как архивация базы данных или секционирование.
Continue reading "Есть ли польза от удаления временной таблицы в хранимой процедуре?"

Обработка неиспользуемых индексов

Пересказ статьи Chad Callihan. Handling Unused Indexes


Что делать, если вы видите, что индекс обновляется, но с ним мало выполняется операций поиска и сканирования? Следует ли вам удалить его, поскольку к таблице нет запросов, или выбирается лучший индекс? Если индекс не имеет обновлений, поиска или сканирования, нужно ли его тогда удалять? Continue reading "Обработка неиспользуемых индексов"

Анатомия плана запроса в PostgreSQL

Пересказ статьи Everett Berry. Anatomy of a PostgreSQL Query Plan


Начинать оптимизацию запроса следует с планировщика запросов (Query Planner). В этой статье объясняется, как выполняется запрос, и как понимать команду EXPLAIN.
Continue reading "Анатомия плана запроса в PostgreSQL"

Замена ограничений уникальности уникальными индексами

Пересказ статьи Erik Darling. Replacing Unique Constraints With Unique Indexes


Следует ли?


Я люблю, когда уникальность применяется правильно. Она может быть полезна не только для защиты от плохих данных, но также помогает оптимизатору в оценке количества строк, когда вы соединяете или фильтруете такие данные.

Continue reading "Замена ограничений уникальности уникальными индексами"