TGViewer
Smart Data Smart Data @smart_data_channel · 1.33K subscribers
Post #150 1.69K
Всем привет. Давно не писал на канале, так что буду исправляться.

Мы продолжаем тему SQL и баз данных, и сегодня я хочу рассказать о 4-х типах объектов, которые встречаются в большинстве СУБД: base table (таблица), temporary table (временная таблица), view (представление), materialized view (материализованное представление).

Решил написать небольшую шпаргалку с описанием этих объектов и в каких случаях какой объект использовать или не использовать.


Base table - классическая таблица. На логическом уровне это выделенное пространство на диске или в памяти, где хранятся данные, которые мы загрузили в эту таблицу.
Базовая таблица является основой для создания других объектов в базе данных.


Temporary table - временная таблица, которая, как правило, существует в рамках одной сессии подключения к базе данных. Простыми словами, если вы подключились к базе данных, создали временную таблицу, использовали её для своих нужд и разорвали соединение, то в рамках следующей сессии этой таблицы уже не будет.

Когда использовать: временные таблицы могут быть полезными, если вы часто обращаетесь к данным большой базовой таблицы (base table) в рамках одной сессии. Это, в свою очередь, может замедлять скорость работы и потреблять большое количество вычислительных ресурсов, что сильно снижает эффективность. Поэтому, вы можете создать временную таблицу на базе основной для хранения промежуточных результатов и писать запросы уже к ней, что может сильно повысить производительность.

Когда не использовать: временные таблицы лучше не использовать для сложной логики запросов и вычисляемых полей. Для этих задач больше подходят views (представления).


View - по сути, это хранимый SQL-запрос, который содержит в себе направления к данным, которые хранятся в основных таблицах. Т.е. представление хранит не данные сами по себе, а направление к ним.

Когда использовать:
- для хранения сложной логики запросов к основным таблицам. Например, для джоинов часто используемых таблиц, для вычисляемых столбцов и метрик. Представления устраняют избыточную работу для получения данных из базовых таблиц: вместо того, чтобы постоянно описывать ту же самую логику в запросах к основным таблицам, мы можем писать запросы ко view, которые уже содержат эту логику;
- для предоставления доступа только к определённым полям в основной таблице для групп пользователей. Представления являются хорошей опцией для того, чтобы обезопасить данные от нежелательного доступа. Например, вы хотите предоставить информацию о работниках, но не хотите предоставлять информацию об их зарплате.

Когда не использовать: со временем базовые таблицы могут становиться всё больше, и сложный запрос во view становится всё медленее, что делает анализ данных очень долгим и неудобным. Чтобы устранить просадку в производительности, мы можем материализовать результаты запроса, который хранится в представлении. Для этой задачи и существуют materialized views.
  • 👍 2
More from @smart_data_channel
  1. Mar 1, 2022На этом я закончу. Уже достаточно сказано. Если бы кто-то знал, насколько мне противно пис…
  2. Mar 1, 2022Надеюсь, эта война скоро закончится, и я перестану писать о политике и буду писать только…
  3. Mar 1, 2022Ребята, меня переполняют негативные эмоции. Я стараюсь из-за всех сил, чтобы мой негатив н…
  4. Feb 27, 2022Я никогда не любил политику, особо не вникал в неё и новости практически не смотрел. Я оче…
  5. Feb 20, 2022Жизненный цикл запросов и план выполнения запроса на примере PostgreSQL - Часть 1 Всем при…
  6. Dec 28, 2021Как я и ожидал, результаты опроса получились далеко неоднозначными. Около половины опрошен…
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 →