【问题标题】:Azure SQL Database Advisor suggestionAzure SQL 数据库顾问建议
【发布时间】:2016-11-19 21:32:00
【问题描述】:

我最近收到一封来自 Azure SQL 性能顾问服务的电子邮件(实际上是两封),说我在 Azure 上的数据库需要进行索引调整,并且此建议是免费提供的。

在我看来这是一项非常好的服务,因为我不是数据库专家。

但是这个建议真的很奇怪,因为建议在已经是外键的数据库列上创建一个索引(所以它已经有一个索引)。

Recommended action:     CreateIndex
Indexed columns:    [Xxxxxx]
Estimated Index Impact:     HIGH IMPACT
Date:   2016-11-17

我需要指定该列实际上是通过EF6中的外键数据注释属性来管理的。

然后我尝试应用建议,所以我用[Index] 属性修饰了列,我怀疑,相应的迁移只是对索引进行了重命名。

但是,我无法通过数据注释属性来指定索引中包含的列。

这可能是咨询服务发现的问题吗?在这种情况下,如果我直接在数据库上使用 DDL 创建索引,我如何保持数据库结构与代码同步?

编辑:

根据@ErikEJ 的评论,我在应用建议之前为表添加 DDL:

CREATE TABLE [dbo].[SVC](
    [SVCID] [int] IDENTITY(1,1) NOT NULL,
    [....other fields omitted for brevity...],
    [CampaignID] [int] NOT NULL,
CONSTRAINT [PK_SVC] PRIMARY KEY CLUSTERED ( [SVCID] ASC )
     WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[SVC]  WITH CHECK ADD  CONSTRAINT [FK_SVC_CampaignID] FOREIGN KEY([CampaignID]) REFERENCES [dbo].[SvcCampaign] ([CampaignID])
GO
ALTER TABLE [dbo].[StoredValueCard] CHECK CONSTRAINT [FK_SVC_CampaignID]
GO

CREATE NONCLUSTERED INDEX [IX_CampaignID] ON [dbo].[SVC] ( [CampaignID] ASC ) 
  WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, 
        ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
GO

正如我已经写过的,索引已经到位,如果我在类成员上添加索引属性,我只会得到索引的重命名作为迁移结果。不过很抱歉没有说清楚。

【问题讨论】:

  • 外键默认没有索引,是什么让你认为 Wouk 是这种情况?
  • 因为当我应用了建议时,相应的迁移里面只有一个 RenameIndex ...
  • 但那是代码,不是数据库!您查看数据库架构了吗?
  • 对。但是数据库与代码正确对齐。我认为这是隐含的。
  • 表是否在列 yes 或 no 上有索引?请向我们展示相关表的 CREATE TABLE 脚本......

标签: azure entity-framework-6 azure-sql-database


【解决方案1】:

原答主是正确的,FKs 默认不被索引。如果您允许,数据库顾问将为您创建索引。

至于“维护数据库结构”,这实际上是关于 sql 脚本的全部内容,除非您维护的参考实现不是关键问题。

【讨论】:

  • 嗯,这是有道理的。但是,已经有一个索引。我通过添加从实际数据库逆向工程的 DDL 脚本来编辑我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
相关资源
最近更新 更多