У меня есть две базы данных в SQL2k5: одна содержит большой объем статических данных (база данных SQL 1) (никогда не обновляется, но часто вставляется в нее), а другая содержит реляционные данные (база данных SQL 2), связанные со статическими данными. Они разделены главным образом из-за корпоративных руководящих принципов и требований бизнеса: предположим, что объединение их нецелесообразно.
В SQLDB2 есть места, на которые ссылаются PK в SQLDB1; Триггеры управляют ссылочной целостностью, поскольку взаимосвязи между базами данных в SQL Server вызывают проблемы. НО, из-за большого объема данных в SQLDB1, я получаю нетерпеливые спули на запросы, которые соединяются с идентификатором в SQLDB2, который ссылается на данные в SQLDB1. (Со мной пока что? Может пример поможет:)
SELECT t.Id, t.Name, t2.Company
FROM SQLDB1.table t INNER JOIN SQLDB2.table t2 ON t.Id = t2.FKId
Этот запрос приводит к нетерпеливой очереди, что составляет 84% от загрузки запроса; таблица в SQLDB1 имеет 35 миллионов строк, поэтому этот запрос полностью перекрыт. Я не могу создать представление таблицы в SQLDB1 и использовать его в качестве моего FK / index; он не хочет, чтобы я создал ограничение на основе представления.
Кто-нибудь знает, как я могу исправить это огромное узкое место? (Если не считать статических данных в первом БД: поверьте, я утверждал, что один, пока я не посинел, безрезультатно.)
Спасибо!
валькирия
Редактировать: также нельзя создать индексированное представление, потому что нельзя привязать схему к представлению, которое ссылается на таблицу вне базы данных, в которой находится представление. Черт возьми.
Редактировать 2: добавление в указатели индекса не имеет значения.