问题标签 [clustered-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1852 浏览

sql-server - 在同一事务中重命名索引并询问 Sys.Indexes 中的新名称

我正在尝试处理我们程序中的升级组件。这需要更改索引的名称

N'Sig_Summary3Index.IX_Sig_Summary1Index1_StartTime', N'INDEX';

(我们需要与 SQL SERVER 2005 保持兼容)

然后检查它是否存在于同一个事务中:

这将尝试创建索引。:(不知何故,在事务期间,sys.indexes表还没有更新。有没有其他方法可以避免创建这个索引?

编辑:有什么办法可以“刷新” sys 表来更新?手动插入记录?做一些事情以使“检查”不会改变?

0 投票
1 回答
1055 浏览

sql-server - SQL 索引问题:为什么 SQL Server 更喜欢这个非集群索引而不是集群索引?

我有以下查询:

你可以猜到,“STID”是“SecondTable”的主键......并且“FirstTable”将有一个指向第二个表的指针。以下是我拥有的索引:

FirstTable:“STID”列上的非聚集索引

SecondTable:CLUSTERED PRIMARY KEY“STID”上的索引

上面的查询给了我19.90的子树成本,需要 2 秒。

在为该查询运行数据库优化顾问后,他们建议创建与我在第二个表上的索引完全相同的索引......但非集群。所以我用这些结果进行了尝试。

FirstTable:“STID”列上的非聚集索引

SecondTable:NONCLUSTERED“STID”上的索引

现在,上面的查询给了我10.97 的子树成本,并且花费了 <1 秒

这 100% 让我脑洞大开……为什么在这种情况下,非集群索引的执行速度会比集群索引快?

0 投票
5 回答
14060 浏览

sql - SQL中Cluster和Non-cluster索引的区别

只是为了面试问题的知识,以及我的知识。

ClusterSQL -和之间的区别Non-cluster index

0 投票
4 回答
3458 浏览

sql - 连接表的主键/聚集键

假设我们有一个 Product 表、一个 Order 表和一个(联结表)ProductOrder。

ProductOrder 将有一个 ProductID 和一个 OrderID。
在我们的大多数系统中,这些表还有一个称为 ID 的自动编号列。

放置主键(以及聚集键)的最佳做法是什么?

  • 我是否应该保留 ID 字段的主键并为外键对(ProductID 和 OrderID)创建非聚集索引

  • 或者我应该把外键对(ProductID和OrderID)的主键放在ID列上(如果有必要的话)

  • 或者......(你们中的一个人的聪明评论:))

0 投票
5 回答
8043 浏览

sql - 外键列上的聚集索引与非聚集索引相比是否会提高连接性能?

在许多地方,建议在使用 BETWEEN 语句选择行范围时更好地利用聚集索引。当我以使用此聚集索引的方式选择通过外键字段连接时,我想,集群化也应该有所帮助,因为即使它们都具有相同的聚集键值并且未使用 BETWEEN,也会选择行的范围。

考虑到我只关心那个有 join 而没有别的选择,我的猜测是不是错了?

0 投票
4 回答
3028 浏览

mysql - 您能否在 MySQL 中设计一个简单的示例,其中聚集索引是解决方案,而不是普通索引?

我看不到聚集索引的意义,我们什么时候会受益?

0 投票
7 回答
1835 浏览

sql - 是否应该始终索引数据库表中的可搜索日期字段?

如果我在某个日期类型的表中有一个字段,并且我知道我将始终使用比较来搜索它between>或者<永远=不可能有充分的理由为其添加索引?

0 投票
1 回答
35043 浏览

sql - 如何将主键更改为非集群?

兼职不情愿的DBA在这里。我想将现有的主键索引从聚集更改为非聚集。语法正在逃避我。

这就是它现在的脚本。

我在在线文档中没有看到 ALTER CONSTRAINT 语句。

0 投票
2 回答
2989 浏览

sql-server - 具有聚集 GUID PK 的 SQL Server 数据库 - 切换聚集索引或切换到顺序(梳状)GUID?

我们有一个数据库,其中所有的 PK 都是 GUID,大多数 PK 也是表的聚集索引。我们知道这很糟糕(由于 GUID 的随机性)。因此,这里似乎基本上有两种选择(没有将 GUID 作为 PK 完全丢弃,这是我们不能做的(至少目前不是))。

  • 我们可以将 GUID 生成算法更改为例如 NHibernate 使用的算法,如本文所述或者
  • 对于使用最频繁的表,我们可以更改为不同的聚集索引,例如 IDENTITY 列,并将“随机”GUID 保留为 PK。

在这种情况下是否可以给出任何一般性建议?

有问题的应用程序有 500 多个表,目前最大的一个大约有 150 万行,一些表大约 500 000 行,其余的则显着减少(其中大多数远低于 10K)。

此外,该应用程序已经安装在多个客户站点,因此我们必须考虑对现有客户可能产生的任何负面影响。

谢谢!

0 投票
4 回答
4525 浏览

sql-server - SQL Server:按时间戳聚类;优点缺点

我在 SQL Server 中有一个表,我希望将插入添加到表的末尾(而不是导致它们插入中间的集群键)。这意味着我希望表由一些会不断增加的列聚集。

这可以通过在datetime列上进行聚类来实现:

但我不能保证两人Things不会有相同的时间。所以我的要求不能真正通过日期时间列来实现。

我可以添加一个虚拟身份 int列,并在其上进行聚类:

但是您会注意到我的表格已经包含一timestamp列;保证单调递增的列。这正是我想要的候选集群键的特性。

所以我将表聚集在rowversion(aka timestamp) 列上:

我没有添加一个虚拟标识 int列 (RowID) 来确保订单,而是使用我已经拥有的。

我正在寻找的是为什么这是一个坏主意的想法;以及其他更好的想法。

注意:社区维基,因为答案是主观的。