使用复合聚集索引时,SQL Server 是否会跳叶?

2023-11-29

考虑以下复合聚集索引:

CREATE UNIQUE CLUSTERED INDEX ix_mytable ON mytable(a, b)

显然,一个单独的索引b将使搜索的特定值b faster.

但是,如果单独的索引b is not就业,在我看来,复合索引仍然可以用于查找具有特定值的元组b通过遍历离散值树来代替表扫描a并进行本地搜索b,跳转到下一个值a, etc.

SQL Server 就是这样工作的吗? (例如,如果 MSSQL 对具有多列的索引使用单个哈希值,则不会。)

确实如此,并且由于其他原因已经需要复合索引,并且离散值的数量a足够小,性能/空间权衡可能会偏离为b.

(上面的 UNIQUE 和 CLUSTERED 约束对于这个例子来说并不是真正需要的,但它们代表了最快的检索b不涉及单独的索引b--前者为每个循环提供快捷方式a,后者在查找中删除了一级间接性)。


不,不存在跳过“a”簇的情况。仅当指定最左边的列时才能使用索引,否则需要采用全扫描。

Oracle有所谓的“索引跳过扫描”操作员。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用复合聚集索引时,SQL Server 是否会跳叶? 的相关文章

  • 如何查询集成服务目录

    问题 识别连接到 SQL Server 上特定数据库表的所有 SSIS 包 详细信息 服务器上部署了近 100 个包 大多数包的大小都很大 因此很难以高精度手动检查它们 有没有一种快速且自动化的方法来做到这一点 使用 SQL Server
  • 从 SQL Server 读取十进制值时出现溢出异常

    我想知道这是一个错误还是我做错了什么 我正在加载值SqlDataReader来自 SQL Server 2008 数据库 但在某些情况下 它无法将 SQL 值转换为 net 值 NET 4 0 我已将其追溯到一个测试用例 它演示了实际问题
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • 如何在事务中使用链接服务器插入远程表?

    我的链接服务器设置正确 我能够执行以下查询 插入 远程服务器 表 SELECT FROM 本地服务器 表 然而当我做同样的事情时交易内 开始传输 插入 远程服务器 表 SELECT FROM 本地服务器 表 提交交易 我收到类似的错误 用于
  • 如何使用 R 中的函数 sqlSave() 将数据附加到具有 IDENTITY 主键的 SQL Server 表?

    我在SQL Server中创建了一个表 如下所示 CREATE TABLE testPK ID INT NOT NULL IDENTITY 1 1 PRIMARY KEY NumVal NUMERIC 18 4 现在我想使用 RODBC 函
  • 在 SQL Server 2005 IMAGE 列中存储 20 Meg 文件的最有效方法

    我们将文档存储在 SQL Server 2005 数据库表中 列格式为 Image 每次我尝试存储大于 1 Meg 的 PDF 文件时 它都会以某种方式损坏 NET 中是否有任何特别有效的方法来序列化大文件 10megs 并将其存储到数据库
  • 如何在不使用实体框架的情况下从.Net Core连接到SQL Server?

    我们如何从 Net Core连接到SQL Serverwithout使用实体框架 你可以简单地使用传统的方式SqlConnection 这是一个例子 public class BaseDataAccess protected string
  • SQL Server中的列级与表级约束?

    A 列级 GO CREATE TABLE Products ProductID INT CONSTRAINT pk products pid PRIMARY KEY ProductName VARCHAR 25 GO b 表层 CREATE
  • 将图像列保存到 SQL Server 2000 中的文件

    我在 SQL Server 2000 中有一个包含图像列的表 我需要将图像数据保存到文件系统上的文件中 在 SQL Server 2005 中 我可以使用 ADODB Stream 对象进行文件 I O 但这在 SQL Server 200
  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • 如何连接子查询的第一行?

    我有一个发票表和一个按键关联的相关数据的子表 特别是 对于每张发票 我只对子表中的第一个相关行感兴趣 鉴于我想要每个发票键都有一个相关行 我该如何实现这一点 Select i Invoice Number c Carrier Name Fr
  • 实体框架中的批量插入

    我使用批量插入插入大量记录 例如 20K 当我仅插入一个实体时 它会正常工作 但是 当我用来插入多个实体 例如一对多 时 它将仅插入父实体 而不会插入子实体 我的实体和代码 Customer cs public class Customer
  • SQL Server Like 查询不区分大小写

    Query SELECT from Table 2 WHERE name like Joe Output 1 100 Joe 2 200 JOE 3 300 jOE 4 400 joe 为什么不区分大小写 Problem 查询不区分大小写
  • 当我使用可变参数而不是常量参数时,为什么我的内联表 UDF 慢得多?

    我有一个表值内联 UDF 我想过滤该 UDF 的结果以获得一个特定值 当我使用常量参数指定过滤器时 一切都很好 并且性能几乎是瞬时的 当我使用可变参数指定过滤器时 它会花费明显更大的时间块 大约是逻辑读取的 500 倍和持续时间的 20 倍
  • 外键和索引

    我有 2 张桌子 products and 类别 每个类别有很多产品 一个产品可以属于多个类别 products product id int primary auto increment name unique etc 类别 catego
  • Spring Batch 死锁 - 无法增加身份;嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException

    我们正在将 Spring Batch 应用程序从 Oracle DB 迁移到 Azure SQL Server 我在尝试执行时收到以下错误两个不同的工作同时更新不同的表 但使用相同的公共 BATCH 表 引起原因 org springfra
  • 如何进行数据透视并计算列平均值

    我承认这是迄今为止我必须面对的最复杂的 SQL 语句之一 我在这件事上碰壁了 我希望有人能帮我一把 我在数据库中有这张表 Item ActiveTime sec DateTime 1 10 2013 06 03 17 34 22 gt Mo
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 使用 MS Access 链接表连接到 SQL Server 后端时是否可能发生 SQL 注入

    我一直在对此进行一些研究 但到目前为止还是一片空白 情况是这样的 我正在开发一个链接到 SQL Server 后端的 MS Access 前端 我在某种程度上使用 Access 中的链接表 表单访问 SQL DB 这样 当用户更新表单中的值
  • SQL Server 2008 错误 233

    我正在使用以下 sql 脚本在 SQL Server 2008 中创建新登录名 CREATE LOGIN xyz WITH PASSWORD xyz DEFAULT DATABASE master DEFAULT LANGUAGE us e

随机推荐