我在2005年我創建了一個同義詞在一個數據庫訪問另一個數據庫中的表,寫我的查詢時,我想利用SQL Server的單個實例多個數據庫但是,在評估執行計劃時,它似乎沒有使用它。如果我編寫查詢來顯式訪問數據庫,它可以工作,但似乎無法使用同義詞來使其工作。例如:SQL Server表的同義詞指數
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]))
這是同義詞的限制,還是有一些具體的事情,我需要做的就是這個工作?
能否請您發佈的這兩個查詢基本計劃?只要運行'SET SHOWPLAN_TEXT ON GO SELECT ...' – Quassnoi 2009-09-01 14:56:16
我已經更新了說明,包括執行計劃... – 2009-09-01 16:46:34