外键和索引问题

2024-03-19

我正在使用 SQL Server 2008 Enterprise。我有一个表,其中一个列引用另一个表(在同一个数据库中)中的另一列作为外键,这是相关的SQL语句,更详细地说,表[Foo]中的列[AnotherID]引用了另一个表表 [Goo] 的列 [GID] 作为外键。 [GID] 是表 [Goo] 上的主键和聚集索引。

我的问题是,这样,如果我没有显式地在 [Foo] 上的 [AnotherID] 列上创建索引,是否会自动为 [Foo] 上的 [AnotherID] 列创建索引——因为它的外键引用列 [表 [Goo] 上的 GID] 已经有主聚集键索引?

CREATE TABLE [dbo].[Foo](
    [ID] [bigint] IDENTITY(1,1) NOT NULL,
    [AnotherID] [int] NULL,
    [InsertTime] [datetime] NULL CONSTRAINT DEFAULT (getdate()),
 CONSTRAINT [PK_Foo] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

ALTER TABLE [dbo].[Foo]  WITH CHECK ADD  CONSTRAINT [FK_Foo] FOREIGN KEY([Goo])
REFERENCES [dbo].[Goo] ([GID])
ALTER TABLE [dbo].[Foo] CHECK CONSTRAINT [FK_Foo]

提前致谢, 乔治


不会。SQL Server 不会也从来不会在外键列上自动创建索引。这是一个广泛流传的都市神话——但也仅此而已——一个神话。

但这是一种公认​​的最佳实践 - 因此这是索引调整的最基本建议之一 - 将索引放在外键列上。

看看 Kimberly Tripp 的出色表现SQL Server 何时停止在外键列上放置索引? http://www.sqlskills.com/blogs/kimberly/post/When-did-SQL-Server-stop-putting-indexes-on-Foreign-Key-columns.aspx博客文章了解更多背景信息。

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

外键和索引问题 的相关文章

  • 包括 Oracle 中的等效项

    在 SQL Server 中你可以这样写 create index indx on T1 A B INCLUDE C D E 有没有办法在 Oracle 中做同样的事情 Refs http msdn microsoft com en us
  • SQL Server 2008 FileStream 与普通文件

    我正在创建一个像 youtube 这样的应用程序来存储视频 我需要一些建议 我应该使用 SQL Server FileStream 来存储视频文件 还是应该将它们存储在硬盘上的某个位置并将路径记录为 SQL Server 内的 varcha
  • 删除多对多关系中的相关行

    我正在删除位于多对多关系的一个站点上的表中的一行 我还想删除该关系另一端的任何相关行 例如 假设我有下表 我想从中删除一行Cars 我还想从中删除任何相关行Drivers当然 任何不再需要的行CarDrivers Table Cars Ca
  • MS SQL 2008 如何读取日志

    我有一个有很多行的表 有什么办法可以找出来当插入具体行时 我没有创建 更新时间列 Thanks 检查日志以读取此类信息可以在单个日志条目的基础上完成 但该格式仍然没有记录 而且解码起来确实不容易 我只会出于纯粹的兴趣或取证目的而查看它 如果
  • 在 SQL 表中的文本字符串中查找换行符?

    我试图在 SQL 表的列中查找换行符和回车符 但我不确定语法 I tried SELECT foo FROM test WHERE foo LIKE CHAR 10 尽管我知道该表应该返回结果 但我没有得到任何结果 我究竟做错了什么 SEL
  • 声纳+MS SQL数据库

    我正在尝试使用 mssql 服务器数据库初始化声纳 但我不能 使用 Microsoft SQL Server Management Studio 我创建了用户名 sonar 和密码 sonar 的用户 并向同时创建的 sonar 数据库授予
  • 如何重置 pandas 数据框中的索引? [复制]

    这个问题在这里已经有答案了 我有一个数据框 从中删除了一些行 结果 我得到一个数据帧 其中索引是这样的 1 5 6 10 11 我想将其重置为 0 1 2 3 4 我该怎么做 以下似乎有效 df df reset index del df
  • SQL Server 中 SYSDATETIME 数据类型的准确性

    我已经在 SQL Server 2008 的存储过程中使用 SYSDATETIME 进行了一些测试 我设置了一个包含带有 IDENTITY 字段的 datetime2 7 的表 我了解这种数据类型的精度和准确度之间的差异 但是 在从此示例中
  • SQL Server 2008 中 CLR 中的线程

    我有一个CLR运行在下面的进程SQL Server2008 它构建了多个表数据的缓存以保存在静态类中以供其他调用稍后使用 我的问题是 我可以通过生成线程来加载缓存中的每个数据集 表来改进加载此缓存的过程吗 我过去一直回避这一点 因为各种帖子
  • 两列上的唯一索引是否意味着每一列上都有一个索引?

    我的架构中有一个表 它对两列有唯一约束 UNIQUE Column1 Column2 SQlite 文档告诉我 这在这些列上创建唯一索引 http www sqlite org lang createtable html 我的问题是 这是否
  • Tensorflow:获取为零的数组行索引

    对于张量 1 2 3 1 0 0 0 0 1 3 5 7 0 0 0 0 3 5 7 8 如何获取 0 行的索引 IE 列表 1 3 在 Tensorflow 中 据我所知 您无法像使用 NumPy 等更高级的库那样在一个命令中真正做到这一
  • 带附件的数据库电子邮件(excel 文件/pdf 文件)?

    我必须从数据库向我的邮件 ID 发送一封带有附件的邮件 EXEC msdb dbo sp send dbmail profile name Adventure Works Administrator recipients email pro
  • jQuery Cycle 插件 - 如何返回当前显示幻灯片的索引号?

    我目前正在使用Malsup 的 Cycle 插件 http jquery malsup com 我只是想知道是否可以让循环插件返回当前显示幻灯片的索引号 我想在特定幻灯片处于活动状态时更改页面内容 不知道如何实现这一点 你可以这样做 on
  • SQL 解析键值字符串

    我有一个像这样的逗号分隔字符串 key1 value1 key2 value2 key3 value3 key1 value1 1 key2 value2 1 key3 value3 1 我想将它解析成一个如下所示的表 Key1 Key2
  • SQL Server 2008 XPath

    我们尝试根据我们提供的值过滤一组 XML 我们的数据库的 XML 字段中有以下 XML 如果传递数字 5052095050830 我们需要在 XML 中找到这个特定节点 我们提供的号码可能存在任意多次 任何机构都可以提供一些 SQL 示例来
  • SQL:将现有列设置为 MySQL 中的主键

    我有一个包含 3 列的数据库 id name somethingelse 该表没有设置索引 我收到 未定义索引 在 phpmyadmin 中id 是一个 7 位字母数字值 每行都是唯一的 我想将 Drugid 设置为主键 索引 我不知道有没
  • 在 SQL Server 数据库之间传递用户定义的表类型

    我在 SQL Server 的一个数据库中有一个用户定义的表类型 我们称之为DB1 我的类型的定义非常简单 仅包含 2 列 创建我的类型的脚本如下 CREATE TYPE dbo CustomList AS TABLE ID int Dis
  • 如何检查是否启用了更改跟踪

    我试图在运行之前确定我的数据库是否已启用更改跟踪ALTER DATABASE命令来启用它 我试图防止这些脚本多次运行时出现错误 我签到了sys databases and sys dm tran commit table但无法找到我要找的东
  • Postgres 运行缓慢的删除查询

    我们有一个表 其行数刚刚超过 62k 我们正在对其运行一个非常简单的删除查询 需要 45 分钟才能完成 DELETE FROM myTable WHERE createdtime lt 2017 03 07 05 00 00 000 我们尝
  • 优化mysql中日期类型字段的查询

    我目前准备了以下查询 select sum amount as total from incomes where YEAR date 2019 and MONTH date 07 and incomes deleted at is null

随机推荐

  • Delphi 中的泛型会导致性能瓶颈吗?

    最近我一直在开发一个应用程序 想要拥有多种类型的集合 我不想为其类型声明和实现新的集合类 因此 我考虑使用泛型 但不确定泛型与普通类型实例相比的性能 性能是我关注的主要因素 我的应用程序对时间要求很高 甚至损失几百毫秒也是不可取的 我使用的
  • scipy.optimize.minimize(COBYLA 和 SLSQP)忽略 for 循环内发起的约束

    我正在使用 scipy optimize minimize 来求解复杂的油藏优化模型 SQSLP 和 COBYLA 因为问题受到边界和约束方程的约束 每天有一个决策变量 蓄水量 水库的释放量是根据目标函数内蓄水量变化的函数来计算的 然后应用
  • 如何在pandas中沿垂直方向部分合并单元格

    我有以下数据框 index Flag Data 0 1 aaaa 1 0 bbbb 2 0 cccc 3 0 dddd 4 1 eeee 5 0 ffff 6 1 gggg 7 1 hhhh 8 1 iiii 我想得到垂直合并数据其间隔为F
  • 如何通过Youtube Data API v3 / JSOUP解析获取评论? [复制]

    这个问题在这里已经有答案了 通过 Youtube Data API V3 获取评论已进入可信测试阶段 谁能给我一些更新信息 我不想使用 API V2 来获取评论 也许有更好的方法 如果无法使用 Youtube Data API V3 请举例
  • C# - 获取字符的 ANSI 代码值

    我想检索给定字符的 ANSI 代码值 例如 当我现在获取商标字符的 int 值时 我得到 8482 相反 我想获取 153 这是代码页 1252 中商标字符的值 一些帮助将不胜感激 Jurgen 我自己找到的 Encoding ansiEn
  • 在Android Web浏览器中使用js打开选择框

    我有一个标准
  • 具有隐藏属性的类会破坏显示格式吗?

    与这个有趣的问题相关zett42 https stackoverflow com q 71631192 15339544 看起来像对象实例隐藏或私人的特性可能会打破用于显示格式 https stackoverflow com questio
  • R 中 set.seed 的参数

    我想了解如何set seed在 R 中工作 我理解它 可以重现随机样本 但我不知道两者之间有什么区别set seed 1 and set seed 123 括号里的参数是什么意思 The seed论证中set seed是单个值 解释为整数
  • DeleteView 中的 success_message 未显示

    我有一个删除视图 class LectureDelete SuccessMessageMixin DeleteView model Lecture success message Die Veranstaltung wurde gel sc
  • 如何在 ILNumerics 中有效地绘制大曲面(例如 1000x1000)?

    这是我使用的代码 public partial class Form1 Form private ILPlotCube plotcube null private ILSurface surface null public Form1 In
  • 使用字符串中的名称获取变量的值

    我想从变量的名称中获取其值 澄清一下 XML 文档以字符串形式提供变量名称 我想获得价值 像这样的东西 string bublegumA strawberry string bubblegumB banana get which varia
  • 将基于视图的 NSOutlineView 绑定到 Core Data

    我正在尝试将新的基于视图的 OutlineView 实现为我的 Mac 应用程序中的源列表 不过 我无法获取要显示的值 因此我从核心数据应用程序模板制作了一个小型测试应用程序 但也无法让它在其中正常工作 我在数据模型中定义了两个简单的类 我
  • 在 null 上调用成员函数 store() - laravel 5.4

    我正在尝试上传图像 但每次提交时都会返回 store 错误 我已将表单设置为 enctype multipart form data 这没有帮助 有人能指出我正确的方向吗 Thanks 控制器内部功能 public function sto
  • 来自 Android 的 Facebook Score API 调用未在时间轴/股票代码上显示高分

    我正在尝试让 Android 应用程序将高分发布到 Facebook 类似于 Facebook 上的 愤怒的小鸟 的做法 它显示在时间轴上 也显示在股票代码中 请记住 该游戏仅在 Android 上运行 并且没有 FB Canvas 应用程
  • GiST 和 GIN 索引之间的区别

    我正在实现一个表 其中有一列的数据类型为tsvector我想了解什么索引更好使用 GIN 还是 GiST 在浏览中postgres 文档在这里 http www postgresql org docs 9 1 static textsear
  • 模拟安全警报的解决方案 - X509TrustManager 的不安全实现

    因此 最近我在开发人员控制台中收到以下警告 为了解决该问题 我已完成了所需的修复 根据谷歌的建议 here https support google com faqs answer 6346016 要确认您已进行正确的更改 请将应用程序的更
  • CouchDB 备份和克隆数据库

    我们正在寻找 CouchdDB 作为类似 CMS 的应用程序 围绕备份我们的生产数据库有哪些常见模式 最佳实践和工作流程建议 我对克隆数据库以用于开发和测试的过程特别感兴趣 仅从实时运行的实例下复制磁盘上的文件就足够了吗 您可以在两个实时运
  • TabLayout 使用自定义视图更新选项卡内容

    我在用着TabLayout新的材料设计 我有一个问题 创建选项卡后我无法更新自定义视图的选项卡内容 我可以用以下方法简化 PagerAdapter 中的方法 public View setTabView int position boole
  • 记录器服务错误:鼠标左键按下:无法找到匹配的元素 - Xcode 错误

    我正在尝试通过 XCTest 自动化我的 mac 应用程序 当尝试从 XCode 记录应用程序时 我收到以下错误消息 当我点击按钮时会发生这种情况 按钮层次结构是 按钮 gt 堆栈视图 gt NSView 这里 button是NSButto
  • 外键和索引问题

    我正在使用 SQL Server 2008 Enterprise 我有一个表 其中一个列引用另一个表 在同一个数据库中 中的另一列作为外键 这是相关的SQL语句 更详细地说 表 Foo 中的列 AnotherID 引用了另一个表表 Goo