问题标签 [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.
sql-server - 在同一事务中重命名索引并询问 Sys.Indexes 中的新名称
我正在尝试处理我们程序中的升级组件。这需要更改索引的名称
N'Sig_Summary3Index.IX_Sig_Summary1Index1_StartTime', N'INDEX';
(我们需要与 SQL SERVER 2005 保持兼容)
然后检查它是否存在于同一个事务中:
这将尝试创建索引。:(不知何故,在事务期间,sys.indexes
表还没有更新。有没有其他方法可以避免创建这个索引?
编辑:有什么办法可以“刷新” sys 表来更新?手动插入记录?做一些事情以使“检查”不会改变?
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% 让我脑洞大开……为什么在这种情况下,非集群索引的执行速度会比集群索引快?
sql - SQL中Cluster和Non-cluster索引的区别
只是为了面试问题的知识,以及我的知识。
Cluster
SQL -和之间的区别Non-cluster index
?
sql - 连接表的主键/聚集键
假设我们有一个 Product 表、一个 Order 表和一个(联结表)ProductOrder。
ProductOrder 将有一个 ProductID 和一个 OrderID。
在我们的大多数系统中,这些表还有一个称为 ID 的自动编号列。
放置主键(以及聚集键)的最佳做法是什么?
我是否应该保留 ID 字段的主键并为外键对(ProductID 和 OrderID)创建非聚集索引
或者我应该把外键对(ProductID和OrderID)的主键放在ID列上(如果有必要的话)
或者......(你们中的一个人的聪明评论:))
sql - 外键列上的聚集索引与非聚集索引相比是否会提高连接性能?
在许多地方,建议在使用 BETWEEN 语句选择行范围时更好地利用聚集索引。当我以使用此聚集索引的方式选择通过外键字段连接时,我想,集群化也应该有所帮助,因为即使它们都具有相同的聚集键值并且未使用 BETWEEN,也会选择行的范围。
考虑到我只关心那个有 join 而没有别的选择,我的猜测是不是错了?
mysql - 您能否在 MySQL 中设计一个简单的示例,其中聚集索引是解决方案,而不是普通索引?
我看不到聚集索引的意义,我们什么时候会受益?
sql - 是否应该始终索引数据库表中的可搜索日期字段?
如果我在某个日期类型的表中有一个字段,并且我知道我将始终使用比较来搜索它between
,>
或者<
永远=
不可能有充分的理由不为其添加索引?
sql - 如何将主键更改为非集群?
兼职不情愿的DBA在这里。我想将现有的主键索引从聚集更改为非聚集。语法正在逃避我。
这就是它现在的脚本。
我在在线文档中没有看到 ALTER CONSTRAINT 语句。
sql-server - 具有聚集 GUID PK 的 SQL Server 数据库 - 切换聚集索引或切换到顺序(梳状)GUID?
我们有一个数据库,其中所有的 PK 都是 GUID,大多数 PK 也是表的聚集索引。我们知道这很糟糕(由于 GUID 的随机性)。因此,这里似乎基本上有两种选择(没有将 GUID 作为 PK 完全丢弃,这是我们不能做的(至少目前不是))。
- 我们可以将 GUID 生成算法更改为例如 NHibernate 使用的算法,如本文所述,或者
- 对于使用最频繁的表,我们可以更改为不同的聚集索引,例如 IDENTITY 列,并将“随机”GUID 保留为 PK。
在这种情况下是否可以给出任何一般性建议?
有问题的应用程序有 500 多个表,目前最大的一个大约有 150 万行,一些表大约 500 000 行,其余的则显着减少(其中大多数远低于 10K)。
此外,该应用程序已经安装在多个客户站点,因此我们必须考虑对现有客户可能产生的任何负面影响。
谢谢!
sql-server - SQL Server:按时间戳聚类;优点缺点
我在 SQL Server 中有一个表,我希望将插入添加到表的末尾(而不是导致它们插入中间的集群键)。这意味着我希望表由一些会不断增加的列聚集。
这可以通过在datetime
列上进行聚类来实现:
但我不能保证两人Things
不会有相同的时间。所以我的要求不能真正通过日期时间列来实现。
我可以添加一个虚拟身份 int
列,并在其上进行聚类:
但是您会注意到我的表格已经包含一timestamp
列;保证单调递增的列。这正是我想要的候选集群键的特性。
所以我将表聚集在rowversion
(aka timestamp
) 列上:
我没有添加一个虚拟标识 int
列 (RowID) 来确保订单,而是使用我已经拥有的。
我正在寻找的是为什么这是一个坏主意的想法;以及其他更好的想法。
注意:社区维基,因为答案是主观的。