У меня есть несколько баз данных в одном экземпляре SQL Server 2005. Я создал синоним в одной базе данных для доступа к таблице в другой базе данных, и при написании запросов я хотел бы использовать определенный индекс, однако, при оценке плана выполнения он не используется. Если я напишу запрос для явного доступа к базе данных, он будет работать, но я не могу заставить его работать, используя синоним. Например:
select *
from testdb..testtable with (index(testindex))
|--Nested Loops(Inner Join, OUTER REFERENCES:([testdb].[dbo].[testtable].[id]))
|--Index Scan(OBJECT:([testdb].[dbo].[testtable].[testindex]))
|--Clustered Index Seek(OBJECT:([testdb].[dbo].[testtable].[PK_testtable]), SEEK:([testdb].[dbo].[testtable].[id]=[testdb].[dbo].[testtable].[id]) LOOKUP ORDERED FORWARD)
не дает тот же план выполнения, что и
select *
from testdb_synonym with (index(testindex))
|--Clustered Index Scan(OBJECT:([testdb].[dbo].[testtable].[PK_testtable]))
Это ограничение по синонимам или мне нужно что-то конкретное, чтобы это заработало?