与使用WHERE子句相关的性能问题

时间:2011-04-24 18:53:44

标签: sql sql-server where-clause

我在这里遇到一个SQL语句的问题,它根据类别从名为News的表中获取数据:   新闻:Id(PK)int,标题字符串,主题字符串,Uid int,Cid int。

SELECT Id, Subject, Uid, Title FROM News WHERE Uid = @Uid

与没有WHERE的语句相比,此语句运行缓慢,因为它应该检查每一行以确保它是否完成条件。

想象一下我的表新闻10000000篇文章。我该怎么办这件事?

4 个答案:

答案 0 :(得分:4)

如果Id列是可能已经群集的主键(默认情况下是它们),则只需要在Uid列上创建非聚集索引 - 尤其是Uid列是唯一标识符(GUID)数据类型。

可以通过运行以下SQL来创建:

创建非集群指数IX_News_Uid ON News (     UID )

答案 1 :(得分:1)

您应该为列Uid创建一个索引,其中包含IdSubjectTitle列。

这样数据库就可以只使用索引来运行查询,而不必触及该表。

答案 2 :(得分:0)

应该可以在Uid列上创建clustered index。这应该可以提高性能。注意:每个表只能有一个聚簇索引列。

答案 3 :(得分:0)

我会在Uid上创建一个唯一索引。