Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQLServer2005新手查询_Sql Server_Sql Server 2005_Clustered Index - Fatal编程技术网

Sql server SQLServer2005新手查询

Sql server SQLServer2005新手查询,sql-server,sql-server-2005,clustered-index,Sql Server,Sql Server 2005,Clustered Index,我是SQL Server 2005的初学者,我正在通过在线教程学习,以下是我的一些问题: 1:从XYZ选择*和从XYZ选择全部*之间有什么区别 2:聚集索引的目的是通过物理排序表来简化搜索[据我所知:-)]。假设表上有主列,那么在表上创建聚集索引是否好?因为我们已经有一列被排序了 3:为什么我们可以在一个表上创建1个聚集索引+249个非聚集索引=250个索引?我理解1个聚集索引的要求。但为什么是249??为什么不超过249个呢 与SELECT DISTINCT相比,默认值为无差异SELECT A

我是SQL Server 2005的初学者,我正在通过在线教程学习,以下是我的一些问题:

1:从XYZ选择*和从XYZ选择全部*之间有什么区别

2:聚集索引的目的是通过物理排序表来简化搜索[据我所知:-)]。假设表上有主列,那么在表上创建聚集索引是否好?因为我们已经有一列被排序了

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

  • SELECT DISTINCT
    相比,默认值为无差异
    SELECT ALL

  • 众说纷纭。出于性能原因,聚集索引在理想情况下应该是小的、稳定的、唯一的且单调递增的。主键也应该是稳定的和唯一的,所以有一个明显的适合那里。但是,聚集索引非常适合范围查询。如果PK是非聚集的,那么通过PK查找单个记录可以执行得很好,因此一些作者建议不要“浪费”PK上的聚集索引

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

  • 对于3:

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


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

    谢谢您的输入。但我对数字感到困惑。为什么只有249个?为什么不是248或251?我认为只有当一个表有聚集索引时,所有索引都必须更新。谢谢你的建议,我对第1点和第2点很清楚。但我对第3点有点困惑,为什么表中有999个非聚集索引为什么不是900或1000?@Zerotoinfinite-唯一能回答这个问题的人是SQL Server开发人员!我认为在内部,他们只分配有限的空间来存储这些元数据,999听起来是一个合理的限制。