简单SQL删除查询的性能问题

简单SQL删除查询的性能问题,sql,sql-server,sql-server-2005,sql-server-2008-r2,Sql,Sql Server,Sql Server 2005,Sql Server 2008 R2,今天我遇到了一个简单删除查询的性能问题。 我有两张桌子 Table Name : Attribute Column List : AttributeId Char(15), Desc Varchar(50) 此属性表仅包含15行 另一个事务表 Table Name : member Column List : memid Int, AttributeId Char(15), another set of 100 columns. 此事务表AttributeId列与属性表具有外键关系,

今天我遇到了一个简单删除查询的性能问题。 我有两张桌子

 Table  Name : Attribute
 Column List : AttributeId Char(15), Desc Varchar(50)
此属性表仅包含15行

另一个事务表

Table Name : member
Column List : memid Int,  AttributeId Char(15), another set of 100 columns.
此事务表AttributeId列与属性表具有外键关系,并且此表包含超过10000000条记录,并且在AttributeId列上没有任何索引。 当我们试图从属性表中删除一条记录时,删除查询大约需要3分钟才能完成执行。 如果禁用成员表中的外键约束,则在10毫秒内执行相同的删除查询

因此,为了提高删除查询的性能,我们决定在member.AttributeId列上创建非聚集索引


我们的问题是,这个member.AttributeId列有更多的空值(大约7500000条记录)。我们可以在此列上创建非聚集索引吗。请分享您的输入。

是的,您可以创建索引。。。您已经这样做了:)您可能想尝试创建一个筛选索引,但在创建筛选索引的同时,请使用稀疏列作为空值列。这篇文章可能会对您有所帮助