SQL Server 执行计划中的“聚集索引扫描(聚集)”是什么意思?

2024-01-09

我有一个查询无法执行,并显示“由于文件组“DEFAULT”中磁盘空间不足,无法为数据库“TEMPDB”分配新页面”。

在排除故障的过程中,我正在检查执行计划。有两个标记为“聚集索引扫描(聚集)”的昂贵步骤。我很难理解这意味着什么?

我希望对“聚集索引扫描(聚集)”有任何解释或关于在哪里找到相关文档的建议?


我希望对“聚集索引扫描”有任何解释 (聚集)”

我将尝试以最简单的方式表达,为了更好地理解,您需要了解索引查找和扫描。

所以让我们建表

use tempdb GO


create table scanseek  (id  int , name varchar(50) default ('some random names')  )

create clustered index IX_ID_scanseek on scanseek(ID)


declare @i int
SET @i = 0
while (@i <5000)
begin 
insert into scanseek
select @i, 'Name' + convert( varchar(5) ,@i)
set @i =@i+1
END

索引查找是 SQL Server 使用的地方b-tree https://en.wikipedia.org/wiki/B-tree直接查找匹配记录的索引结构

您可以使用下面的 DMV 检查表根和叶节点

-- check index level 
SELECT 
index_level
,record_count
,page_count

,avg_record_size_in_bytes
FROM sys.dm_db_index_physical_stats(DB_ID('tempdb'),OBJECT_ID('scanseek'),NULL,NULL,'DETAILED')
GO

现在我们在“ID”列上有聚集索引

让我们查找一些直接匹配的记录

select * from scanseek where id =340

并查看执行计划

您直接在查询中请求行,这就是您获得聚集索引 SEEK 的原因。

聚集索引扫描:当Sql服务器从上到下读取聚集索引中的行时。 例如在非关键列中搜索数据。在我们的表中 NAME 是非键列,因此如果我们在名称列中搜索一些数据,我们将看到clustered index scan因为所有行都位于聚集索引叶级别。

Example

select * from scanseek where name = 'Name340'

请注意:我简短地回答了这个问题,只是为了更好地理解,如果您有任何问题或建议,请在下面评论。

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

SQL Server 执行计划中的“聚集索引扫描(聚集)”是什么意思? 的相关文章

随机推荐

  • 在引导程序中,如何使图像成为下拉菜单?

    在引导程序中 如何使图像成为下拉菜单 您好 我在引导程序中创建了一个下拉列表 我想放置一个图像 使其成为单击的项目以查看下拉列表 下面是我的代码
  • C++ 模板和内联

    当我编写一个简单 非模板 类时 如果函数实现 就地 提供 它会自动被视为inline class A void InlinedFunction int a 0 the same as inline void InlinedFunction
  • 输入(...)提示后显示%?

    假设我们使用的是 python3 3 和多平台 Linux 和 WIndow 如果我执行以下操作 gt gt gt eval input enter a percent from 1 100 I get enter a percent fr
  • 在 MongoDB 中查询相似数组

    我想在 MongoDB 集合中搜索具有相似数组的文档 并按相似值排序 Example 我会寻找 chars a b c 我已经存储了这些文件 1 chars s e c 2 chars i l d 3 chars b a c 4 chars
  • 如何断言 C# 异步方法在单元测试中引发异常? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用 NUnit 测试异步方法 最终使用另一个框架 https stackoverflow com questions 12191831 how do i test an async method
  • Jupyter Notebook 同时显示和捕获输出

    我试图找到一种方法来 保存 jupyter 笔记本中的变量 同时捕获丰富的输出 主要是由于 ssh 断开连接等原因 仅分配给变量是行不通的 因为某些库会打印进度条等信息 到目前为止 最有希望的方法是使用 capture然而 在最近的版本中
  • Table Row,可以将高度设置为零吗?

    可以将表格行高设置为 0 吗 IE 8 Chrome 火狐 Opera 你为什么问 好吧 我有一行是在用户单击父行时动态构建和显示的 问题是 如果没有行 当单击时 它仍然显示一个空的 1 像素高的行 这是子网格视图
  • 摆脱 Google api lib 中不必要的依赖项

    背景 我已经在客户端和服务器端使用 Google 服务成功实现了用户身份验证 我用过适用于 PHP 的 Google API 客户端库 https github com googleapis google api php client为此目
  • Nullable 是“预定义值类型”吗?或者 Equals() 和 == 在这里如何工作?

    对于我自己的 Equals 方法的实现 我想检查一堆内部字段 我这样做 myNullableInt obj myNullableInt myString obj myString 我假设 这会比较值 包括 null 是否相等 而不是对象地址
  • Chrome DevTools 协议:如何获取节点的单击事件处理程序名称

    Problem 我有一个相同节点的列表 这些节点附加了相同的处理程序或函数 我需要单击 DOM 中存在的每个交互式节点 这是功能或要求 如果已经单击了要单击的节点或者该节点附加了相同的处理程序 我想跳过要单击的节点 请参阅下面的屏幕截图以供
  • 带有 Asp.net Webforms 的 Azure Active Directory SSO

    我们在 Net 3 5 中有一个 Asp Net Webforms 应用程序 它已经具有带有 FormsAuthentication 的身份验证模块 对于新要求 我们需要使用 Azure Active Directory 实施 SSO SA
  • 纬度和经度的数据类型正确吗? (在活动记录中)

    我应该将纬度和经度存储为字符串或浮点数 或其他东西 吗 我正在 Rails 上使用 activerecord ruby 如果这很重要的话 Update 开发中的 Mysql 和生产中的 postgresql 为什么重要 这就是我使用的 ad
  • 根据字符串的特定排列对字符串数组进行排序

    在 Javascript 中 我有一个值数组 例如 Toy Car PC Water Apple 我需要按此优先级按特定顺序对值进行排序 PC Car Toy Apple Water 请注意 这不能按字母顺序排序 而是按提供的值的特定顺序排
  • NSFetchedResultsController 让我发疯

    自 1 个月以来 我一直在使用 NSFetchedResultsController 构建应用程序 并在 3 1 2 SDK 上测试该应用程序 问题是我一直在我的应用程序中到处使用 NSFetchedResultsController 并正
  • CMAKE_COMPILER_IS_GNUCXX 和 CMAKE_CXX_COMPILER_ID 为空

    我目前正在玩CMake http cmake com并想要检测编译器和编译器版本 我现在的CMakeLists txt看起来如下 cmake minimum required VERSION 2 6 set PROJECT a tour o
  • 只有创建视图层次结构的原始线程才能触摸其视图

    我正在尝试让 ImageView 在我的可绘制文件夹中的 2 个图像之间进行动画处理 我以为一切都会正常 但日志显示错误 Only the original thread that created a view hierarchy can
  • 没有 GPU 的系统上的 CUDA [重复]

    这个问题在这里已经有答案了 我的系统中没有安装 GPU 卡 我想知道是否有任何方法可以在我的无 GPU 笔记本电脑上使用 CUDA 进行编码并访问 CUDA 库 是的 您可以使用 CUDA 模拟器 例如 https code google
  • 首先使用简单的键进行地理空间索引

    在阅读了 MongoDB 和地理空间索引 http www mongodb org display DOCS Geospatial Indexing 让我惊讶的是它不支持不以二维索引开头的复合键 我不知道我是否会从中获得任何好处 但现在 m
  • Airflow + Okta 集成问题 OAuth2.0

    我正在尝试使用 Okta 我们的 Idp 和 OAuth2 0 OpenID 对 Airflow 进行身份验证 为此 我将此作为参考 https tech scribd com blog 2021 integrating airflow a
  • SQL Server 执行计划中的“聚集索引扫描(聚集)”是什么意思?

    我有一个查询无法执行 并显示 由于文件组 DEFAULT 中磁盘空间不足 无法为数据库 TEMPDB 分配新页面 在排除故障的过程中 我正在检查执行计划 有两个标记为 聚集索引扫描 聚集 的昂贵步骤 我很难理解这意味着什么 我希望对 聚集索