我在Azure中有2个数据库,
我在DB1中创建了表格
CREATE TABLE [Payment](
[PaymentID] [int] IDENTITY(1,1) NOT NULL,
[PaymentDate] [date] NOT NULL,
[Medicare] [int] NOT NULL,
[Medicaid] [int] NOT NULL,
[VA] [int] NULL,
CONSTRAINT [pkPayment] PRIMARY KEY CLUSTERED
(
[PaymentID] ASC
) ON [PRIMARY]
我在DB2中为DB1创建了外部数据源作为FirstDb,以访问DB2中的Payment表。
当我在DB1中检查表格付款的sp_help'付款'时,我可以看到主键&索引avaialble
但是当我检查来自DB2的表的sp_help'FirstDb.payment'时,我看不到主键和&索引。
为什么我们看不到钥匙和钥匙来自DB2的索引,
我怀疑是否使用外部数据源从DB2查询支付表FirstDb将在执行期间应用索引。?
答案 0 :(得分:2)
答案很简单。要查看数据库之间的对象定义,您必须能够在数据库之间进行查询。在Azure SQL数据库中,您没有这种能力。这就是为什么你必须创建一个外部数据源来甚至在两个数据库之间进行查询。
答案 1 :(得分:2)
将外部表的查询作为T-SQL查询下推到远程目标(可以下推的原始查询的所有部分,例如过滤器,聚合)。在远程端(在您的情况下为DB1)查询优化再次发生,因此查询可能会使用任何存在的索引。
答案 2 :(得分:1)
在远程数据库上评估参数化查询,并利用远程数据库上的索引。在查询计划中,您将在远程查询运算符(远程查询区域)上看到将WHERE子句上的表列上应用的过滤器传递给远程数据库。
希望这有帮助。