SQL Server 2008 пользовательский запрос выполнения? - PullRequest
0 голосов
/ 26 января 2012

Не вдаваясь в подробности, у меня есть очень уродливая база данных SQL Server 2008, которая используется очень уродливым программным обеспечением, разработанным сторонним поставщиком.Через программный интерфейс это позволяет мне проектировать и строить таблицы SQL Server и писать запросы.Отлично подходит для бизнес-пользователей, ужасно для производительности и дизайна базы данных.

Ни в одной из таблиц нет столбцов или индексов первичного ключа, а «ключи», которые генерирует программное обеспечение, равно как и почти все другие важные поля, - это большие столбцы varchars и text.Короче говоря, производительность ужасна, и я вынужден импортировать более 100 000 строк данных и, возможно, намного больше.

Мой вопрос - поскольку я не могу контролировать программное обеспечение или его запросы, возможно, я мог бы настроитьSQL Server обрабатывает эти запросы?Есть ли способ изменить механизм запросов или вставить триггер предварительного выбора, чтобы сопоставить текстовый ключ с моим собственным созданным столбцом, который я мог бы правильно проиндексировать?В идеале я мог бы просто заменить любой экземпляр ColumnA (например) в предложении WHERE на ColumnAIndexed до того, как SQL Server попытается его обработать.Есть ли шанс, что что-то подобное возможно?

Спасибо.

1 Ответ

0 голосов
/ 26 января 2012

Звучит так, как будто вы не можете сами размещать индексы на столе.Если это так, то вы можете использовать индексированное представление .Если вы используете SQL Server Enterprise или более позднюю версию, вам, возможно, не нужно ничего делать.

Вы можете поместить некластеризованные индексы в свои поля (вычисленные в представлении) после создания кластеризованного индекса.

Индексированные представления могут быть созданы в любой редакции SQL Server.В SQL Server Enterprise оптимизатор запросов автоматически рассматривает индексированное представление.

Тогда необходимо запросить представление (с помощью NOEXPAND, если вы не на предприятии).

Далее: посмотрите на пример здесь , который демонстрирует, что Оптимизатор запросов может учитывать индексированные представления для запросов, которые не ссылаются на них.Возможно, вам удастся создать индексированное представление для обычно используемых предикатов и получить некоторую производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...