主键是否应始终指定为聚集索引

2023-11-26

我有一个存储员工详细信息的 SQLServer 表,列 ID 为 GUID 类型,列 EmployeeNumber 为 INT 类型。大多数时候,我会在进行连接和选择条件时处理 EmployeeNumber。

我的问题是,将主键分配给 ID 列,同时将聚集索引分配给员工编号是否明智?


是的,有可能有一个非聚集主键,也有可能有一个与主键完全无关的聚集键。默认情况下,主键也成为聚集索引键,但这不是必需的。

主键是一个逻辑概念:是数据模型中用于引用实体的键。
聚集索引键是一个物理概念:是您希望行在磁盘上存储的顺序。

选择不同的聚集键是由多种因素驱动的,例如 keywidth当您需要比主键更窄的聚集键时(因为聚集键被复制到every非聚集索引。或者经常支持范围扫描(在时间序列中常见)当数据经常通过查询访问时,例如date between '20100101' and '20100201'(聚集索引键date会是合适的)。

这个主题之前已经在这里讨论过,另请参阅聚集索引应该放在哪一列上?.

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

主键是否应始终指定为聚集索引 的相关文章

  • NVARCHAR 变量在Where 子句中不起作用

    在 SQL Server 我想是 2018 我不知道如何判断 中 我的变量不起作用WHERE的条款NVARCHAR 比较应该返回值 但它什么也没返回 如果我只是手动输入声明的文本 它会突然起作用并返回值 没有任何逻辑原因应该有任何不同 类型
  • 如何将SQL数据加载到Hortonworks中?

    我已在我的电脑中安装了 Hortonworks SandBox 还尝试使用 CSV 文件 并以表结构的方式获取它 这是可以的 Hive Hadoop nw 我想将当前的 SQL 数据库迁移到沙箱 MS SQL 2008 r2 中 我将如何做
  • 3 个表的 SQL 查询(或联接)

    第一次在 Stack Overflow 上问问题 很棒的资源 但是只有一件事真正让我作为 SQL 新手感到困惑 我有三个表 我想获取与鲍勃的学生相关的所有导师的姓名 表 1 教师 ID Name 1 Bob 表 2 学生 STUDENT I
  • SQL 使用另一列的键和最大值设置列

    我需要根据同一 ID 的 duration 列的最大值更新 max register 列 将值设置为 1 其他值设置为 0 初始表 Id duration max register 1 0 0 1 7 0 1 3 0 2 10 0 2 5
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • WHERE NOT EXIST 附近的语法错误

    我在堆栈中搜索 但没有一个达到最终答案 我的查询是这样的 INSERT INTO user username frequence autoSend VALUES feri2 3 1 WHERE NOT EXISTS SELECT FROM
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • Oracle:按月分区表

    我的解决方案 德语几个月 PARTITION BY LIST to char GEBURTSDATUM Month PARTITION p1 VALUES JANUAR PARTITION p2 VALUES Februar PARTITI
  • 插入具有只读主键列的表

    我正在使用一个使用 sql server 数据库的应用程序 我试图在表中插入一行 如下所示 该表有一个主键 prodNum 这是自动生成的密钥 当我尝试向表中插入一行时 如下所示 在行中intResult oSglProdTableAdap
  • SQL Server使用in关键字传递字符串数组查询

    我认为 IN 子句不能接受具有多个值的绑定参数 Oracle 不能 需要几分钟 查询是 declare setting varchar max set setting Sales Entry Grid Cursor Customer Man
  • 如果 Oracle SQL 中存在视图,则删除视图[重复]

    这个问题在这里已经有答案了 我是 Oracle 数据库系统的新手 Oracle 12c 中以下 SQL 语句的等效项是什么 DROP VIEW IF EXIST
  • ALTER TABLE 语句与 FOREIGN KEY 约束冲突

    为什么要添加外键tblDomare表导致此错误 ALTER TABLE 语句与 FOREIGN KEY 约束 FK tblDomare PersN 5F7E2DAC 冲突 冲突发生在数据库 almu0004 表 dbo tblBana 列
  • 如何获得一列中的最大数量?

    我一直在尝试找到一个如何获取列中最大数字的示例 我想做的是 找到 TABLE A 中的最大列数 点 列 例如 我想输出这个 MAX 数字
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 如何使用一个命令删除 SQL 数据库中的所有索引?

    那么 如何通过一条命令删除 SQL 数据库中的所有索引呢 我有这个命令可以获取所有 20 个左右的 drop 语句 但是如何从这个 结果集 运行所有这些 drop 语句呢 select from vw drop idnex 给我相同列表的另
  • 向带有检查约束 SQL 的表添加列

    我想向表中添加一列 然后添加一个检查约束以确保其大于 0 我似乎无法让它在 oracle sl Developer 中运行 Alter TABLE store101 add column Base salary Number 7 2 con
  • 计算2个日期之间每个日期的记录数

    我必须创建一个查询来返回多轴图表的结果 我需要计算为 2 个日期之间的每个日期创建的 ID 数量 我试过这个 DECLARE StartDate datetime2 7 11 1 2020 EndDate datetime2 7 2 22
  • SQL Server 中离线索引重建和在线索引重建有什么区别?

    重建索引时 有一个选项ONLINE OFF and ONLINE ON 我知道当ONLINE模式打开时 它会复制索引 切换新查询以利用它 然后重建原始索引 使用版本控制跟踪两者的更改 如果我错了 请纠正我 但是 SQL 在离线模式下会做什么
  • 从 MS Access 调用存储过程会导致错误 3146

    当我使用下面所示的代码从 MS Access 前端调用 SQL Server 存储过程时 它停止运行并抛出运行时错误 3146 这个存储过程在 SQL Server 中工作正常 但是当我从 MS Access 运行时 它首先工作 但突然停止

随机推荐

  • 无法在 python pandas 中获得未堆叠的条形图

    这很奇怪 我似乎无法在 python pandas 中获得未堆叠的条形图 与 pandas 官方指南不同 这些条似乎只是重叠的 而不是横向放置的 知道为什么会这样吗 df plot kind bar stacked False figsiz
  • Java 中的监视器是什么?

    Java并发编程中的监视器指的是什么 当我读到 每个对象都关联一个监视器 时 这是什么意思 它是一个特殊的物体吗 监视器是控制对对象的并发访问的机制 这允许您执行以下操作 主题 1 public void a synchronized so
  • 检测页面是否加载完成

    有没有办法检测页面何时完成加载 即所有内容 javascript 以及 css 和图像等资产 so like if PAGE HAS FINISHED LOADING do something amazing 另外 如果页面加载时间超过 1
  • Oracle EXECUTE IMMEDIATE 到游标中

    我有一个存储过程 它使用了EXECUTE IMMEDIATE命令执行一个很长的字符串 如何支持很长的字符串并将数据返回到引用游标中 假设您的 SQL 不超过 32K 正如 Tony Andrews 暗示的那样 您应该能够使用如下内容 dec
  • 简单自定义类型的“未定义用户定义类型”

    在 Excel 2007 中 我在 VBA 中有以下非常简单的代码 Public Type specType sb As Long End Type Private Sub MyButton Click Dim spec As specTy
  • iPhone SDK - 获取/计算相机视野 (FOV)(增强现实)

    有没有办法通过调用 API 来找出或计算 iPhone 相机的视野 FOV 还是您必须亲自亲自找出答案 如果无法使用 API 获取或计算它 而是必须将其硬编码到应用程序中 那么找出应用程序正在运行的设备类型的最佳方法是什么 不同的设备有不同
  • 使用anaconda在Windows上安装tensorflow

    我正在尝试在我的 Windows PC 上安装 Tensorflow 由于我已经在 Python 3 5 上安装并使用了 Anaconda 因此我已按照说明进行操作https www tensorflow org versions r0 8
  • 如何设置Cmder不换行文本输出

    Cmder 的默认设置是换行文本输出 但如何设置Cmder不换行文本输出呢 Cmder 我的意思是 http cmder net 到目前为止 我不认为有办法禁用文本换行 有人确实提出了相关问题禁用换行 然而 正如特色ConEmu 的路线图
  • 在 Tomcat jruby-rack 上使用 log4j 记录 Rails 3 应用程序

    我刚刚花了 3 个小时的大部分时间尝试使用 Log4j 来记录我的 Rails 应用程序 我终于让它工作了 但我不确定我所做的是否正确 我尝试了各种方法都没有效果 直到最后一次尝试 所以我真的在这里寻找一些验证 也许还有一些指示和技巧 说实
  • 多次选择同一行

    我有一张表 其中有一个主对象的一些子对象 任何子项都可以出现多次 并且有一个包含该数字的 Occurences 列 因此表中的数据类似于 ChildID ParentID Occurences 1 1 2 2 1 2 3 2 1 4 2 3
  • 如何在 Windows Phone 7 中创建连续动画?

    我知道 Windows Phone 7 中有一个连续过渡 但它似乎尚未包含在 silverlight 工具包中 有什么想法如何创建一个吗 提前致谢 UPDATE 最后我从 Kevin Marshall 那里拿了一些代码优秀的帖子关于 wp7
  • 使用 Launch4J 将 JRE 捆绑到 exe 中

    我正在尝试使用 launch4j 将 JRE 捆绑到我的 exe 中 我的文件夹结构如下 test jre copied from my windows installation of jre bin lib jretest jar the
  • 转到特定修订版

    我克隆了某个项目的 git 存储库 我可以将文件转至初始状态 然后在查看文件时转到修订版 2 3 4 最新版本吗 我想了解一下该项目的发展情况 执行前请记住 此命令会让您陷入困境头部分离状态 Use git checkout
  • 如何覆盖 shell 脚本中的多行?

    我想一遍又一遍地向终端写入多行 就像是 echo One Line echo Two Lines echo r b rThree Lines echo Four Lines 理想情况下 这首先会输出 One Line Two Lines 然
  • 实体框架代码第一个日期时间字段在修改时更新

    我有以下实体 public class User public int UserId get set public string UserName get set public string UserAddress get set publ
  • 如何在打字稿中引用除第一个参数之外的所有参数

    我想在另一个函数中引用一个函数的参数类型 但只使用它们的子集 params of bar should be same as foo except p1 should be a different type function foo p1
  • 如何使用 Java 以编程方式将 MouseEvent 触发到 MouseListener?

    我有一个JTree与自定义关联MouseListener 用于显示弹出窗口等 我需要开火MouseEvent将会被捕获MouseListener 我应该如何以编程方式做到这一点 您可以创建自己的 MouseEvent 并循环所有侦听器并进行
  • C# - FileStream:既锁定文件,又能够在不截断文件的情况下读取文件并在截断文件的情况下写入文件

    我想我的标题不太清楚 我会尝试解释一下 我可以使用 FileStream 写入和读取文件 FileStream fs new FileStream C Users Public text txt FileMode OpenOrCreate
  • 如何使用 Watir 获取元素自定义属性的值

    我的 HTML 看起来像这样
  • 主键是否应始终指定为聚集索引

    我有一个存储员工详细信息的 SQLServer 表 列 ID 为 GUID 类型 列 EmployeeNumber 为 INT 类型 大多数时候 我会在进行连接和选择条件时处理 EmployeeNumber 我的问题是 将主键分配给 ID