You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中使用同义词查询是否会调用源表索引?

同义词与索引相关问题解答

1. 通过D2的同义词查询是否会使用D1中T1表的索引?

会的。同义词本质是原表的指向性别名,当你通过D2的同义词T1执行查询时,数据库会直接解析到原表D1.T1,查询优化器会完全考虑原表上的所有索引,逻辑上和直接查询D1.T1是一致的。

2. 为何同义词查询会导致tempdb持续增长,而直接在D1中查询正常使用索引?

虽然同义词本身不影响索引的可用性,但以下情况可能导致执行计划差异,进而引发tempdb增长:

  • 权限上下文不同:在D2中执行查询时,你的用户权限、默认数据库配置等上下文环境和D1中不一致,可能导致优化器选择了低效的执行计划(比如全表扫描而非索引查找),产生大量中间数据写入tempdb。
  • 统计信息缺失/过时:D2数据库中没有原表T1的统计信息,或者统计信息未及时更新,优化器无法准确评估数据分布,从而做出错误的执行计划选择。
  • 跨数据库的隐式转换:如果查询中涉及跨数据库的字段类型不匹配,触发隐式转换,会导致索引无法被利用,进而引发全表扫描,产生大量临时数据。

3. 能否为同义词创建索引?

不能。同义词只是原数据库对象的引用,本身不存储任何数据,也不支持直接创建索引。所有索引必须直接创建在原表D1.T1上,同义词会自动继承原表的索引能力。

内容的提问来源于stack exchange,提问作者Sujeet Chaurasia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:25:45