当 WHERE 子句中只有单个列时,SQL Server 是否会使用复合索引?

2024-03-13

假设我有一张桌子:

CREATE TABLE Users (
    Id INT IDENTITY (1, 1),
    FirstName VARCHAR(40),
    LastName VARCHAR(40)
)

查询通常是开启的 or LastName,而且还关于 and LastName.

如果我创建一个非聚集索引另一个关于LastName,那么我的前两个查询就得到了满足。显然,SQL Server 将使用索引交集 http://www.sql-server-performance.com/articles/per/index_intersection_p1.aspx对于其他查询。

或者,如果我在 (FirstName) 和 (LastName, FirstName) 上有索引,SQL Server 是否可以/是否使用第二个索引来查询LastName以及对两者的疑问?

SQL Server 复合索引部分是从左到右还是从右到左存储?换句话说:它将把密钥构建为 LastNameFirstName 或 FirstNameLastName?还是可以任意选择一个?


SQL Server 是否可以/是否使用索引(LastName、FirstName)来查询 LastName 以及两者?

是的,数据库将使用索引 (LastName, FirstName) 来查询 LastName。它会not不过,仅将此索引用于对 FirstName 的查询。

它是从左到右还是从右到左存储复合索引部分?

存储位于B-Tree http://en.wikipedia.org/wiki/B-tree。无论您认为它是从右到左存储还是从左到右存储,都只是一种有用的可视化辅助,与实际的数据存储无关。

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

当 WHERE 子句中只有单个列时,SQL Server 是否会使用复合索引? 的相关文章

  • 方法与管道

    在 Angular 应用程序中的模板插值中使用管道和方法有区别吗 例如 h1 name toLowerCase h1 vs h1 name lowercase h1 就性能而言 是有真正的收获还是只是个人喜好 我知道调用模板中的方法通常会降
  • MySQL 性能 DELETE 或 UPDATE?

    我有一个超过 10 7 行的 MyISAM 表 向其中添加数据时 我必须在最后更新 10 行 删除它们然后插入新行更快 还是更新这些行更快 应更新的数据不是索引的一部分 索引 数据碎片怎么样 UPDATE到目前为止要快得多 当你UPDATE
  • 通过网络恢复数据库备份

    如何通过网络使用 SQL Server 2005 恢复数据库备份 我记得以前这样做过 但这样做的方式有些奇怪 您几乎没有选择使用网络文件作为备份源 在与 MS SQL Server 相同的用户下映射网络驱动器 路径 托管文件 使用 xp c
  • T-SQL 相当于 =rand()

    我有几个内容表 我想用随机的文本段落填充它们 在 MS Word 中 我只需输入 rand 即可 我收到三段新鲜的文字 是否有 SQL 脚本 命令可用于使用 t sql 生成随机字典单词 declare Lorem nvarchar max
  • 为什么 SQL Server 不推荐使用 SET ANSI_PADDING OFF?

    根据 MSDN BOL 在线书籍 SET ANSI PADDING http msdn microsoft com en us library ms187403 aspx 在 Microsoft SQL Server 的未来版本中 ANSI
  • SQL Server - 如何向登录名授予对所有数据库的读取访问权限?

    我需要向新登录授予对服务器上所有 300 个数据库的读取权限 如何在不选中用户映射区域中的 300 个复选框的情况下完成此操作 一种方法是在 SSMS 的查询菜单上设置 结果为文本 然后执行以下命令 它实际上并不进行更改 而是生成一个脚本供
  • JS中函数声明速度差异

    我运行了一个简单的 jsperf 测试 在 Firefox 中运行时一切都按预期进行 但当我在 Google Chrome 中运行测试时却感到困惑 该测试正在测试在 JavaScript 中声明函数然后调用它们的不同方式 我的猜测是 Chr
  • 将服务器添加到 SQL Management Studio

    我想将不同服务器上的一堆 SQL 2000 2005 的混合 服务器实例添加到我的 SSMS SQL Managment Studio 注册服务器 我正在遵循本教程here http sev17 com 2008 12 registerin
  • SQL FORMAT 函数错误

    这个SQL select FORMAT lNum from rpt myView 产生以下错误 参数数据类型 varchar 对于格式的参数 1 无效 功能 lNum is a varchar 10 运行 SQL Server 2012 v
  • 如何在大空间尺度上加速A*算法?

    From http ccl northwestern edu netlogo models community Astardemo http ccl northwestern edu netlogo models community Ast
  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • 从 SQL Server 中的子查询值或其他聚合函数获取平均值

    我有 SQL 语句 SQL Server SELECT COUNT ActionName AS pageCount FROM tbl 22 Benchmark WHERE DATEPART dw CreationDate gt 1 AND
  • SSIS Master 包执行来自另一个项目的包

    我有多个SSIS项目 但其中的一些包是相同的 我想创建一个包含所有内容的项目generic包并将其他项目与他们的特定包一起保存 所以我的问题是 是否有可能有一个主包可以执行并将父变量传递给另一个项目的包 我是 SSIS 新手 如果这是一个明
  • 随机排列每行的列值

    我正在使用 C NET 开发多项选择题考试生成器 每次做出报告时 都会在数据库中随机挑选问题 并随机调整选项 我可以做随机问题部分 但我不能做选择的洗牌 我有一张表 其中一行如下 question answer distractor1 di
  • 如何在 SQL Server 2008 中使用 GUID 数据类型?

    我想使用建立一个员工表SQL SERVER 2008 在我的表中 我希望为每个员工提供一个 ID 我听说过GUID我有点明白它是一种数据类型 但我无法使用它 你能告诉我使用它的方法吗 顺便说一句 假设我想要这样的东西 CREATE TABL
  • 公共领域还好吗?

    在你像我最初那样做出直觉反应之前 请阅读整个问题 我知道它们让你感觉很脏 我知道我们以前都被烧伤过 我知道这不是 好风格 但是公共场所可以吗 我正在开发一个相当大规模的工程应用程序 该应用程序创建并使用结构的内存模型 从高层建筑到桥梁再到棚
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • sql脚本变量默认值

    我有一个脚本文件 例如测试 sql 我想从另一个脚本调用它 比如 caller sql 在 sqlcmd 模式下使用 r test sql 这工作正常 但我想在 test sql 中使用脚本变量 当我从 caller sql 调用 test
  • 为什么 java.util.Arraylist#clear 按照 OpenJDK 中的方式实现?

    http grepcode com file repository grepcode com java root jdk openjdk 6 b14 java util ArrayList java 473 http grepcode co
  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID

随机推荐

  • 在 React 中如何设置文档标题?

    我想为我的 React 应用程序设置文档标题 在浏览器标题栏中 我尝试过使用反应文档标题 https github com gaearon react document title 似乎已经过时 和设置document title in t
  • 在尝试发送短信之前检查 Android 中的网络覆盖范围

    我想为 Android 智能手机创建一个应用程序来检查手机是否处于飞行模式 如果是 应用程序会使手机退出飞行模式 并检查是否有任何网络连接可以发送短信 当我说网络连接时 我指的是发送短信的手机网络覆盖范围 我不想检查互联网连接 如果有网络连
  • WPF DataGrid 网格线在另存为 PDF 时不可见

    我正在使用 DataGrid 来表示 WPF 应用程序中的一些数据 在我使用 PDFSharp 将具有 DataGrid 的特定 WPF 窗口保存到 PDF 的功能中 我遇到一个问题 即当以较小的查看百分比查看保存的 PDF 时 DataG
  • 我的 Rails 和 Cocoa 应用程序之间的 SHA1 哈希值不匹配

    我有一个 Cocoa 应用程序将一些数据以及该数据的 SHA1 哈希值发送到 Rails 应用程序 该应用程序验证数据和哈希值是否匹配 但它们不匹配 可以肯定的是 我已经记录了在 Rails 和 Cocoa 端散列到控制台的数据的十六进制版
  • 使用回溯的数独求解器

    我最近一直在研究回溯数独求解算法 目前我想问一下我应该如何将我的solve 方法从void更改为boolean 我正在使用一个非常简单的回溯算法 它目前工作正常 但我宁愿有一个布尔值而不是一个空值 因为有一个打印堆栈不是很好 Thanks
  • 如何截断C char*?

    就如此容易 顺便说一句 我正在使用 C 我已经阅读了 cplusplus com 的 cstdlib 库函数 但我找不到一个简单的函数 我知道字符的长度 我只需要erase最后三个字符 我可以使用 C 字符串 但这是用于处理文件 它使用 c
  • 计算一个字节中零和一的数量

    我之前发布了一个程序来查找一个字节中 1 的总数 现在我正在尝试查找一个字节中 0 的数量 以下是我的代码 MOV AL 1 MOV CX 08H MOV BX 0000H MOV DX 0000H Zero SHR AL 01H JZ e
  • 在 Android 中唤醒/睡眠时启动 Activity

    我想制作一个计时器 当 Android 设备被唤醒时开始计时 当 Android 设备设置为睡眠时停止计时 我什么也没找到 如何触发活动 通过唤醒 睡眠 我希望你能帮助我解决我的问题 我使用了像 timonvlad 所说的 Broadcas
  • C# 中的分段下载?

    请原谅我对这个问题的无知 我想用 C 编写一个应用程序 可以以相同的方式从服务器下载文件打倒他们 http www downthemall net 做 DownThemAll 似乎打开了四个到 HTTP 服务器的连接来下载同一文件 我只是想
  • 从 std::tuple 函数 QtConcurrentRun 获取(多)返回值

    您好 我有一个用于在 Qt 中生成某个文件的 MD5 的类 我使用元组从中返回多个值 我想在其他线程上运行它 因为生成所有文件 MD5 可能需要一些时间并且它的冻结 gui我决定使用Qt并发运行在其他线程上运行它 但到目前为止我对如何获取所
  • 捕获代号一中的未知主机异常

    我正在使用构建一个应用程序代号一 http www codenameone com 问题是 我需要使用该应用程序访问 URL 该 URL 返回了我在屏幕上显示的一些结果 所以我用这些行来做到这一点 ConnectionRequest c n
  • Spark 执行器无法访问 kubernetes 集群内的 ignite 节点

    我正在将我的 Spark 作业与现有的 ignite 集群连接起来 我使用服务帐户名spark为了它 我的驱动程序能够访问 ignite pod 但我的执行程序无法访问它 这就是执行程序日志的样子 Caused by java io IOE
  • mongodb count 与 find with count [重复]

    这个问题在这里已经有答案了 我正在对 mongo 版本 2 4 和 3 2 集合中的文档进行计数 馆藏非常大 有3821085篇文档 我需要统计所有文件并附上参考资料 id 我尝试了两种不同的查询 db SampleCollection f
  • 安装 .apk 时,如何将 .apk 中的某些文件解压到 /data/data/ 文件夹?

    我的 Android 应用程序需要另一个 NATIVE 应用程序可执行文件在 Android 应用程序之前运行 以便它们可以通过套接字进行通信 Android 应用程序有一个 JNI 层来处理客户端通信 现在我需要将本机可执行文件与 apk
  • Haskell 的“尾部”函数的时间复杂度是多少?

    当我在阅读 Haskell 教程时 我心里想 Haskell 的时间复杂度是多少tail功能有 以及为什么 我在任何文档中都找不到答案 我猜想对于一个大小为 n 的列表 tail函数将是O n 即将尾部复制到一个新列表并返回该列表 但话又说
  • AndEngine GLES2 中未找到 SimpleLevelLoader 类

    我是 AndEngine 的新手 工作时从AndEngine 教程 http www matim dev com full game tutorial part 11 html 未找到以下类 我尝试从 AndEngine 导入所有库 但仍然
  • 将 DataTable 转换为 JSON,每行包含键

    我认为以下将是一项非常常见的任务 并假设会有一个简单的解决方案 但我找不到 如果我有以下结构的数据表 ID Name Active ID1 John TRUE ID2 Bill FALSE 我想将其序列化为 JSON 对象 其中 ID 列是
  • 如何将浮点数数组转换为 byte[] 并返回?

    我有一个浮点数组需要转换为字节数组并返回浮点 任何人都可以帮助我正确地执行此操作吗 我正在使用 bitConverter 类 发现自己在尝试附加结果时陷入困境 我这样做的原因是为了可以将运行时值保存到 IO 流中 如果重要的话 目标存储是
  • jQuery noConflict() 问题

    因此 我正在一个每次加载页面时都会注入 jQuery 1 2 6 的平台上进行开发 我开发的页面使用 jQuery 1 4 2 因此当我的页面加载时 我的页面上有 2 个 jQuery 实例 为了避免任何冲突 我在页面外部的 JS 文件中包
  • 当 WHERE 子句中只有单个列时,SQL Server 是否会使用复合索引?

    假设我有一张桌子 CREATE TABLE Users Id INT IDENTITY 1 1 FirstName VARCHAR 40 LastName VARCHAR 40 查询通常是开启的名 or LastName 而且还关于名 an