AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 11684
Accepted
Gennady Vanin Геннадий Ванин
Gennady Vanin Геннадий Ванин
Asked: 2010-11-08 12:20:14 +0800 CST2010-11-08 12:20:14 +0800 CST 2010-11-08 12:20:14 +0800 CST

揭穿关于聚簇索引的神话有什么问题?

  • 772

代码有什么问题。或其结果,说明聚簇索引是邪恶的 [1]?
以及如何揭穿,即回到习惯的神话和最佳实践?

[1]
揭穿关于聚集索引的神话 - 第 3 部分(示例脚本)
http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2006/09/16/377.aspx

gbn 编辑,2012 年 1 月

死链接曾经有一个脚本可以“证明”聚簇索引是坏的。

类似的问题:https ://stackoverflow.com/questions/4034076/reasons-not-to-have-a-clustered-index-in-sql-server-2005

sql-server performance
  • 2 2 个回答
  • 358 Views

2 个回答

  • Voted
  1. Best Answer
    gbn
    2010-11-08T12:29:01+08:002010-11-08T12:29:01+08:00

    该脚本有一个相当宽的 varchar 聚集索引。在用随机数据填充它之后,它也需要重建索引:你会有大量的碎片。

    一个好的聚簇索引是窄的、数字的并且严格单调递增:这就是人们使用代理键的原因......

    没有聚集索引的表被称为“堆”,因为它就是:一堆数据躺在磁盘上。无论您重建多少 NC 索引,它都会保持这种状态。除了临时表(具有加载/截断使用模式)之类的东西之外,没有理由不拥有集群主键。

    编辑:该链接并没有揭穿聚集索引的神话,而是展示了如何创建不合适的聚集索引以及为什么索引维护很重要。第 1 部分和第 2 部分提到了书签查找(现在是 SQL Server 2005+ 中的键查找):一个好的 NC 索引将被覆盖,因此它们不会发生。

    要了解索引,我建议阅读 Simple Talk 的许多文章。像这个

    • 8
  2. nvogel
    2010-11-09T13:39:50+08:002010-11-09T13:39:50+08:00

    聚簇索引并不邪恶。然而,并不是每个表都能从聚簇索引中获益,而且它们经常被粗心地以有害的方式滥用。因此,Gregg(和其他人)的文章的重点是展示一些陷阱。

    • 2

相关问题

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何在转储中使用使用数据库执行 mysqldump

    • 4 个回答
  • Marko Smith

    在 MySQL Workbench 中,在表的“顶部”插入一个新列?

    • 4 个回答
  • Marko Smith

    SQL Server - 临时表与物理表

    • 3 个回答
  • Marko Smith

    什么时候全表扫描比索引扫描更好?

    • 4 个回答
  • Marko Smith

    收缩数据库和文件有什么区别?

    • 3 个回答
  • Marko Smith

    Sql FILESTREAM 垃圾回收问题

    • 1 个回答
  • Marko Smith

    SQL Server 2008 DBCC 问题

    • 2 个回答
  • Marko Smith

    如何在恢复中停止、脱机和删除 SQL Server 数据库?

    • 2 个回答
  • Marko Smith

    如何将 SQL Server 2000 数据库恢复到 SQL Server 2008 实例?

    • 5 个回答
  • Marko Smith

    在 T-SQL 中使用 CAST 会影响性能

    • 3 个回答
  • Martin Hope
    user481826 如何在转储中使用使用数据库执行 mysqldump 2010-10-29 16:08:59 +0800 CST
  • Martin Hope
    Will A SQL Server - 临时表与物理表 2010-07-05 08:46:10 +0800 CST
  • Martin Hope
    NibblyPig SQL 2008 中的表分区 - 为什么? 2010-06-30 00:59:23 +0800 CST
  • Martin Hope
    Gnomo 解释执行计划 2010-09-10 10:31:11 +0800 CST
  • Martin Hope
    ahsan 什么时候全表扫描比索引扫描更好? 2010-12-10 10:16:54 +0800 CST
  • Martin Hope
    Tom DeMille 我应该定期缩小我的数据库或至少我的日志文件吗? 2010-04-24 08:19:19 +0800 CST
  • Martin Hope
    Jango 收缩数据库和文件有什么区别? 2010-08-24 10:25:42 +0800 CST
  • Martin Hope
    CrapHands 如何在恢复中停止、脱机和删除 SQL Server 数据库? 2010-12-18 07:12:36 +0800 CST
  • Martin Hope
    Ryan Delucchi 在 T-SQL 中使用 CAST 会影响性能 2010-07-02 15:11:16 +0800 CST
  • Martin Hope
    Manjot SQL 2005:我们能否确定重建索引维护作业可以使数据库日志文件增长多少? 2010-08-12 18:40:44 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve