Добрый день!

Есть желание увеличить быстродействие системы. Выполняю запрос по поиску полей таблиц к которым существует много запросов, но на них нет индексов. И одна из таблиц выпадает AccountCommunication [Средства связи Юр. лиц]. Сам объект унаследовал структуру от объекта [Базовое средство связи]. Так вот получается, что в базовом объекте нет индексов на основные поля для поиска, такие как Id,[Position]. Есть какая-то причина отсутствия индексов на этих полях или их можно создать?

Нравится

6 комментариев

И как все-таки будет правильно, добавить индекс на базовый объект или в тот который унаследовал? Или при добавление в унаследованный объект в базовый он добавится автоматически?

Анастасия, с точки зрения БД родительский и дочерний объекты — это 2 разных таблицы. Следовательно, средствами Management Studio можно добавлять в дочернюю таблицу индексы, если в ходе анализа выяснилось, что это может увеличить производительность.
Сомневаюсь, что на Id стоит добавлять индекс, ведь это и так первичный ключ. А на второе — можно попробовать.

"Зверев Александр" написал:

Анастасия, с точки зрения БД родительский и дочерний объекты — это 2 разных таблицы. Следовательно, средствами Management Studio можно добавлять в дочернюю таблицу индексы, если в ходе анализа выяснилось, что это может увеличить производительность.

Сомневаюсь, что на Id стоит добавлять индекс, ведь это и так первичный ключ. А на второе — можно попробовать.


Вот и мне не понятно... Индекс уникальный некластеризованый в БД на Id стоит, а приложение показывает, чтот у этого объкта на этом поле нет индекса.

Смотрите на уровне БД, там вернее. Колонка Id в любой таблице bpm'online — первичный ключ. Возможно, поэтому её явно и не показывает как индекс.

"Астапеева Анастасия" написал:Есть желание увеличить быстродействие системы.

Желание или необходимость? :smile:

"Астапеева Анастасия" написал:Так вот получается, что в базовом объекте нет индексов на основные поля для поиска, такие как Id,[Position].

не думаю что поле Position - подходящая кандидатура для построения индекса (если я правильно понимаю, это порядковый номер в рамках 1 контрагента?)... кардинальность большая. Индексы хорошо строить по колонкам с практически уникальными значениями (опять же, если СУБД потом будет их использовать).

По-идее индекса по Id и AccountID должно быть вполне достаточно.

Индексов побольше налепить конечно никто не мешает, но будет ли достигнута цель - увеличить быстродействие... а то можно и наоборот сделать, индексы это не бесплатное приложение к таблице.

В общем, есть впечатление что не тут копаете, Анастасия... Могу посоветовать книгу, правда на английском... но может и русские версии уже есть: SQL Server 2008 Query Performance Tuning Distilled (2009)
версия СУБД может и немного старовата, но для CRM систем более чем сгодится.

"komgbu" написал:

Желание или необходимость? :smile:

В общем, есть впечатление что не тут копаете, Анастасия... Могу посоветовать книгу, правда на английском... но может и русские версии уже есть: SQL Server 2008 Query Performance Tuning Distilled (2009)

версия СУБД может и немного старовата, но для CRM систем более чем сгодится.

Именно желание. Спасибо большое за книгу и совет.

Показать все комментарии