小编Jar*_*man的帖子

SQL Server表与索引同义词

我在一个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)
Run Code Online (Sandbox Code Playgroud)

不会产生与之相同的执行计划

select *
from testdb_synonym with (index(testindex))

|--Clustered Index Scan(OBJECT:([testdb].[dbo].[testtable].[PK_testtable]))
Run Code Online (Sandbox Code Playgroud)

这是同义词的限制还是我需要做些什么才能让它发挥作用?

sql database sql-server indexing synonym

9
推荐指数
2
解决办法
7639
查看次数

标签 统计

database ×1

indexing ×1

sql ×1

sql-server ×1

synonym ×1