0

我是 SQL Server 2005 的初学者,我正在从在线教程中学习它,这是我的一些问题:

1:Select * from XYZ 和 Select ALL * from XYZ 有什么区别。

2:聚集索引的目的是通过对表进行物理排序来使搜索更容易[据我所知:-)]。假设表上有主列而不是在表上创建聚集索引好吗?因为我们已经有一个已排序的列。

3:为什么我们可以在一张表上创建1个聚集索引+249个非聚集索引=250个索引?我了解 1 个聚集索引的要求。但是为什么是249??为什么不超过 249?

4

2 回答 2

0
  1. 没有区别SELECT ALL是默认的,而不是SELECT DISTINCT

  2. 意见不一。出于性能原因,理想情况下,聚簇索引应该小、稳定、唯一且单调递增。主键也应该是稳定和独特的,所以那里很合适。然而,聚集索引非常适合范围查询。如果 PK 是非聚集的,则通过 PK 查找单个记录可以很好地执行,因此一些作者建议不要在 PK 上“浪费”聚集索引。

  3. 在 SQL Server 2008 中,您最多可以在一个表上创建 999 个 NCI。我无法想象曾经这样做过,但我认为通过“过滤索引”可能会提高限制,这可能是一个可行的案例。索引增加了数据修改操作的成本,因为更改需要在多个地方传播,所以我想它只会在很大程度上是只读(例如报告)数据库,甚至可以达到非聚集非过滤索引的两位数。

于 2010-11-22T10:58:55.117 回答
0

对于 3:

每次在表中插入/删除记录时,都必须更新所有索引。如果索引太多,则需要很长时间。

如果您的表有超过 5-6 个索引,我认为您需要花时间检查一下自己。

于 2010-11-22T11:02:47.257 回答