gpt4 book ai didi

SQL Server 表与索引的同义词

转载 作者:太空狗 更新时间:2023-10-30 01:45:01 24 4
gpt4 key购买 nike

我在一个 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]))

这是 Synonyms 的限制,还是我需要做一些特定的事情才能让它发挥作用?

最佳答案

这是 Microsoft 已修复的错误:请参阅 MS KB 963684

In Microsoft SQL Server 2005, you create a synonym for a table. You run a query against the synonym. The query uses the INDEX optimizer hint to force an index. If you examine the execution plan that is generated for the query, you may find the execution plan does not use the forced index.

关于SQL Server 表与索引的同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1362916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com