SQL

Области для изучения

  • Типы данных (авто инкремент, blob)

  • CRUD operations (select, insert, update, delete)

  • Функции aggregate (max, min, iif, sum)

  • JOINs (left, right, inner, outer)

  • Distinct

  • Группировка

  • Подзапросы

  • Индексы (PK, FK, суррогатные индексы), управление подключением индексов

  • Последовательность применения группировок и сортировок

  • Производительность выборки, профилирование, планы запросов

  • Уровни изоляции транзакций (dirty read, read committed, repeatable read)

  • Хранимые процедуры и триггеры

  • 1-5 нормальные формы хранения данных

Best practices

  • Избегать использования бизнес логики SQL сервера (хранимые процедуры и триггеры)

  • Использовать Restrictions, индексы для поддержания целостности данных который бы запрещал вставку дубликатов.

  • Использовать поля createdAt, updatedAt в каждой таблице. При обновлении указывать where updatedAt = <date> чтобы избежать ситуации перезаписывания уже обновленной записи.

  • Пытаться использовать 3ю нормальную форму для хранения данных, использовать денормализацию только для решения проблем с производительностью.

  • Шардировать данные, создавать несколько таблиц для общей сущности для ускорения выборок, в таблицах с 10M+ строк. Например address_a, address_b .. address_z: адреса начинающиеся с разных букв находятся в разных таблицах.

Рекомендуемая литература

Last updated