问题标签 [non-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 投票
3 回答
1977 浏览

sql-server-2008 - 如何定义非聚集索引的列顺序

我写了一个像这样的子查询:

我想创建一个非聚集索引来提高这部分的性能。

这里有3个问题:

  1. 索引列的正确顺序是什么?
  2. 此外,A 列应该是索引列还是仅包含在索引中?
  3. 这可以在没有子查询的情况下重写(注意top 1and order by desc)并且可以提高性能吗?

编辑: 这是查询(数据同步过程的一部分):

0 投票
2 回答
13785 浏览

sql-server - 主键总是在 sql server 中被索引?

如果指定了非聚集主键约束,则可以在主键列以外的列上创建聚集索引。 http://msdn.microsoft.com/en-us/library/ms186342.aspx

所以上面告诉我:我可以在主键以外的列上创建聚集索引。

我认为它还传达了主键应该是非聚集主键或聚集键。是否可能没有索引主键?

更重要的是:

创建 UNIQUE 约束时,默认情况下会创建唯一的非聚集索引以强制执行 UNIQUE 约束。如果表上的聚集索引尚不存在,您可以指定唯一聚集索引。

这是否意味着唯一约束必须创建聚集索引或非聚集索引?

0 投票
2 回答
4235 浏览

sql-server - 非聚集索引中的行定位符

我正在阅读Non Clustered Index其中说“Nonclustered索引仅包含索引列中的值和指向实际数据行的行定位器,而不是包含数据行本身。这意味着查询引擎必须采取额外的步骤才能找到实际数据。”

查询- 我不清楚Row Locator. 我假设它不是任何Primary key. 背景中发生了与Row-Locator唯一标识行有关的事情。

0 投票
1 回答
285 浏览

sql - 索引字段和包含字段的索引之间的sql差异

我正在提高一些 sql 查询脚本的性能。例如:

当我在 SQL Management Studio 中使用“包含实际执行计划”搜索此 sql 脚本时,结果要求我添加以下索引

但是,如果我删除一些 where 条件,如下所示:

我得到了另一个不同的建议,如下所示:

因为条件是可变的,我应该创建哪个索引?我了解索引的作用,但不了解被索引的字段和被包含的字段之间的好处。为什么在第一个推荐索引中,BOOKID 和 LIBRARY_ID 在索引字段中,而在第二个推荐索引中,BOOKID 和 LIBRARY_ID 在包含字段中?有什么区别,我应该使用哪个来涵盖所有可能的情况?

另外,从我的测试来看,我分别添加了它们来测试性能,但看不出有什么区别。我很感激任何帮助。

0 投票
1 回答
57 浏览

sql - 对一张表中的多组合索引感到困惑

我有一个图书在线销售网站,在系统中,有一个名为 的表格Order,其中有一些列如下:

所以该表有超过 700 万行,目前我正在向网页添加更多查询条件,sql 脚本如下所示:

Order该脚本可能包含所有可能的查询条件,在我在 Management Studio 上运行它并打开“包含的实际执行计划”后,建议说我需要在表上创建索引

但是,当我去创建索引时,我发现其他三个索引已经存在,它们是:

所以上面的3个索引已经创建了,问题是,如果我想创建我的索引,我的意思是我觉得有些重复,我可以合并它们吗?或者每个索引都是针对特定查询的,因为表每天都在增长,除了我的查询之外,我无法确定使用哪个应用程序或什么 sql 脚本。任何想法?

0 投票
2 回答
239 浏览

sql-server - SQL Server 索引导致转换问题

我有一个包含两列的表 - ID 为 int,日期由于某种原因存储为 nvarchar。

最近在 ID 字段上创建了一个非聚集索引。现在在我的查询中,当我将日期从 nvarchar 转换为 date 时,它​​给了我一个“将表达式转换为数据类型 datetime 的算术溢出错误”。例外。

如果我从查询中删除 id 字段,则转换效果很好。同样,如果我从查询中删除日期字段转换,它再次完美运行。如果我删除索引,原始查询将完美运行。

我现在的问题是,为什么 ID 列上的索引会扰乱我认为无关的日期列中的转换?

对此的任何解释都非常感谢。查询是:

0 投票
1 回答
880 浏览

sql-server - Sybase 在执行计划中是否有索引查找操作(如 SQL Server)?

我是试图优化 Sybase 查询的 SQL Server 开发人员。我正在尝试寻找非聚集索引,但它一直在进行扫描,只是想确认在 Sybase 中是否可以“寻找”如果是,如何实现非聚集索引寻找?

我有一个如下查询(* 实际上是大约 32 列)

SELECT t.* FROM dbo.g1_positions t WHERE t.source_date = (select max(source_date) from g1_positions)

我在表上有 3 个非聚集索引(无聚集索引),如下所示

  1. 列 entity_id、bgnref、retnum、source_date 上名为 primary_key 的索引
  2. 列 entity_id、source_date 上名为 idx_entdte 的索引
  3. bgnref、source_date 列上名为 idx_bgndte 的索引

内部查询(计算最大值对 idx_entdte 进行索引扫描),外部索引默认执行表扫描,如果我强制索引它执行索引扫描和一些额外的事情,由“使用 I/O 大小 2 KB 的数据”描述页。使用 MRU 缓冲区替换策略的数据页。”

我的猜测是这相当于我们在 SQL Server 中的“查找”。强制索引后,我看不到性能提升,我只是想知道我能做些什么来提高性能。

我无法对表进行任何更改,例如创建/删除/修改索引。

只是为了让您了解 SQL Server 工作中的查找。

假设我们有包含 4 条记录的 Employee 表。

在此处输入图像描述

如果查询在 Emp_id 上使用非集群索引,它将到达叶节点并获取实际数据将使用指针来读取堆上的实际数据(行)。这个使用指针的过程称为 LookUp

0 投票
2 回答
12705 浏览

sql-server - 同一列上的非聚集索引和聚集索引

我在 Stackoverflow 看到了这篇文章。第一个答案提到诸如聚集索引具有表的所有数据,而非聚集索引仅具有列+聚集索引的位置或行(如果它在堆上)(没有聚集索引的表)。非聚集索引如何获得聚集索引的位置?它只包含在 B 树中排序为节点的列值,每个节点都固定到该列具有该节点值的行,对吗?

0 投票
2 回答
1017 浏览

sql-server - 为什么 SQL Server 向非唯一聚集索引添加 4 字节整数

可以将非唯一列定义为聚集索引和非聚集索引。但是,在聚集索引的情况下,如果列未定义为唯一,SQL Server 会向索引列添加一个 4 字节整数。这样做是为了在内部保持记录的“唯一性”,即使两个或多个记录可能具有该列的值。为什么在非聚集索引的情况下不需要这个整数?

0 投票
1 回答
1621 浏览

data-mining - DBSCAN 可以应用于聚类字符串吗?如果可以,怎么做?

可能重复:
如何将 DBSCAN 算法应用于相似 url 的分组

我被告知在我的期末 sem 中做一个项目,因为该项目涉及使用 DBSCAN 对相似的字符串进行聚类。我想知道这可以使用 DBSCAN 来完成,如果是,那么我该如何实现。