Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по индексированной вью  [new]
assmsk
Member

Откуда:
Сообщений: 164
Всем привет.

Есть таблица А без индексов:

CREATE TABLE A ([id] INT, [NAME] VARCHAR(20), [START_DATE] DATE)


И индексированная вью :

CREATE VIEW v_А WITH SCHEMABINDING  
AS  
SELECT 
 [id]
,[NAME]
,[START_DATE]
FROM А

CREATE UNIQUE CLUSTERED INDEX i_ID  ON v_A (id); 
CREATE NONCLUSTERED INDEX i_name    ON v_A (name); 
CREATE NONCLUSTERED INDEX i_date    ON v_A (start_date)


Вопрос. Существование индексированной вьюхи v_А каким то образом влияет на производительность преобразования данных (INSERT,DELETE,UPDATE) в таблице А?

Сообщение было отредактировано: 14 янв 20, 09:52
14 янв 20, 09:50    [22058530]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
msLex
Member

Откуда:
Сообщений: 7322
assmsk
Всем привет.

Есть таблица А без индексов:

CREATE TABLE A ([id] INT, [NAME] VARCHAR(20), [START_DATE] DATE)



И индексированная вью :

CREATE VIEW v_А WITH SCHEMABINDING  
AS  
SELECT 
 [id]
,[NAME]
,[START_DATE]
FROM А

CREATE UNIQUE CLUSTERED INDEX i_ID  ON v_A (id); 
CREATE NONCLUSTERED INDEX i_name    ON v_A (name); 
CREATE NONCLUSTERED INDEX i_date    ON v_A (start_date)



Вопрос. Существование индексированной вьюхи v_А каким то образом влияет на производительность преобразования данных (INSERT,DELETE,UPDATE) в таблице А?

Да, влияет. Индексированное вью и его индексы - материализуются, их поддержание требует дополнительных операций.
14 янв 20, 09:55    [22058536]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4214
assmsk,

А зачем вам индексировать вью с одной таблицей? Индексировать есть смысл что-то из нескольких таблиц или что-то в чем есть какая-то логика кроме выбора нескольких полей.
14 янв 20, 09:58    [22058542]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30210
assmsk
Вопрос. Существование индексированной вьюхи v_А каким то образом влияет на производительность преобразования данных (INSERT,DELETE,UPDATE) в таблице А?
В данном случае влияние то же самое, как от создания этих индексов на саму таблицу.
Только менее производительно, потому что в случае вью таблица остаётся кучей, и получается, что таблица как бы удваивается.
14 янв 20, 10:23    [22058558]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
entrypoint
Member

Откуда:
Сообщений: 166
alexeyvg,

alexeyvg
Только менее производительно, потому что в случае вью таблица остаётся кучей

Остается кучей даже если для представления создан кластерный индекс ? Как в этом случае
автор
CREATE UNIQUE CLUSTERED INDEX i_ID ON v_A (id);


Сообщение было отредактировано: 14 янв 20, 10:49
14 янв 20, 10:47    [22058578]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
icprog
Member

Откуда:
Сообщений: 166
entrypoint,

Таблица остается кучей, т.к.
CREATE UNIQUE CLUSTERED INDEX i_ID ON v_A (id);

совершенно не затрагивает исходную таблицу. Создается индекс i_ID (материализуется представление) дублирующий данные исходной таблицы
14 янв 20, 11:49    [22058642]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
msLex
Member

Откуда:
Сообщений: 7322
entrypoint
Остается кучей даже если для представления создан кластерный индекс ? Как в этом случае


Создание индексированного вью никак не влияет на структуру хранения данных в самой таблице.
14 янв 20, 11:49    [22058643]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
entrypoint
Member

Откуда:
Сообщений: 166
icprog,
msLex,

Понятно, что таблица остается кучей, а что происходит с представлением в этом случае ?
14 янв 20, 11:58    [22058652]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
msLex
Member

Откуда:
Сообщений: 7322
entrypoint
icprog,
msLex,

Понятно, что таблица остается кучей, а что происходит с представлением в этом случае ?


Оно материализуется.
14 янв 20, 11:59    [22058654]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
entrypoint
Member

Откуда:
Сообщений: 166
msLex
entrypoint
icprog,
msLex,

Понятно, что таблица остается кучей, а что происходит с представлением в этом случае ?


Оно материализуется.


Т.е. перестает быть кучей ?
14 янв 20, 12:15    [22058669]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7178
a_voronin
assmsk,

А зачем вам индексировать вью с одной таблицей? Индексировать есть смысл что-то из нескольких таблиц или что-то в чем есть какая-то логика кроме выбора нескольких полей.


Может быть автору для каких-то целей нужна кластеризованная реплика таблицы.
14 янв 20, 12:17    [22058670]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4214
Владислав Колосов
a_voronin
assmsk,

А зачем вам индексировать вью с одной таблицей? Индексировать есть смысл что-то из нескольких таблиц или что-то в чем есть какая-то логика кроме выбора нескольких полей.


Может быть автору для каких-то целей нужна кластеризованная реплика таблицы.


Кластеризованная по другому принципу нежели исходная таблица?
14 янв 20, 12:28    [22058686]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7178
a_voronin,

исходная таблица - куча, см. выше переписку.
14 янв 20, 12:49    [22058706]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
msLex
Member

Откуда:
Сообщений: 7322
entrypoint
msLex
пропущено...


Оно материализуется.


Т.е. перестает быть кучей ?

Вью вообще не может быть кучей
14 янв 20, 13:15    [22058729]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
defragmentator
Member

Откуда:
Сообщений: 20498
alexeyvg,

по логике да, понятно, что индексы должны перестраиваться в случае insert/update/delete, а по факту, если одна таблица в сотне вьюшек с индексами будет задействована, получится, что всё, кранты серверу?
Или там какой - либо интеллектуальный алгоритм перестойки индексов есть, типа по-необходимости ?
14 янв 20, 14:24    [22058807]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
defragmentator
Member

Откуда:
Сообщений: 20498
defragmentator
alexeyvg,

по логике да, понятно, что индексы должны перестраиваться в случае insert/update/delete, а по факту, если одна таблица в сотне вьюшек с индексами будет задействована, получится, что всё, кранты серверу?
Или там какой - либо интеллектуальный алгоритм перестойки индексов есть, типа "по-необходимости" ?
14 янв 20, 14:25    [22058809]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
msLex
Member

Откуда:
Сообщений: 7322
defragmentator
alexeyvg,

по логике да, понятно, что индексы должны перестраиваться в случае insert/update/delete, а по факту, если одна таблица в сотне вьюшек с индексами будет задействована, получится, что всё, кранты серверу?
Или там какой - либо интеллектуальный алгоритм перестойки индексов есть, типа по-необходимости ?

конечно вью не будет изменятся, если изменения в таблице ее не затрагивают.
14 янв 20, 14:26    [22058812]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30210
entrypoint
Остается кучей даже если для представления создан кластерный индекс ? Как в этом случае
Разумеется.
Индексиорованная вьюха - это отдельный объект.
В данном случае она со всеми полями, тро есть будет копия таблицы, но кластерная.
Если сделать 10 таких вьюх, то будет 10 кластерных таблиц, + ещё одна в виде кучи.
14 янв 20, 21:47    [22059273]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30210
defragmentator
по логике да, понятно, что индексы должны перестраиваться в случае insert/update/delete, а по факту, если одна таблица в сотне вьюшек с индексами будет задействована, получится, что всё, кранты серверу?
Почему кранты?

Накладные расходы будут возрастать, как для любого индекса.

Сделайте вместо вьюхи покрывающий индекс [id] include([NAME],[START_DATE]), он тоже займёт место.

То есть правильно сказать не кранты, а возрастающие накладные расходы на изменения данных из за каждого нового индекса, плюс дополнительное место для хранения, но при этом ускорение выборки (если индекс "правильный").
А уж наступят ли "кранты", из за этих накладных расходов, зависит от объёмов и нагрузок.
14 янв 20, 21:51    [22059276]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30210
defragmentator
Или там какой - либо интеллектуальный алгоритм перестойки индексов есть, типа по-необходимости ?
Нет, там всё онлайн в транзакции, как и для любого индекса.
Нету такого, что если к вьюхе не обращались, то она не будет обновляться.
14 янв 20, 21:53    [22059278]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по индексированной вью  [new]
defragmentator
Member

Откуда:
Сообщений: 20498
alexeyvg,

спасибо
15 янв 20, 01:20    [22059353]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить