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 / 问题 / 11679
Accepted
ahsan
ahsan
Asked: 2010-12-10 10:16:54 +0800 CST2010-12-10 10:16:54 +0800 CST 2010-12-10 10:16:54 +0800 CST

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

  • 772

在哪些情况下(在 SQL Server 中),全表扫描优于索引扫描?

sql-server execution-plan
  • 4 4 个回答
  • 10306 Views

4 个回答

  • Voted
  1. gbn
    2010-12-10T10:24:56+08:002010-12-10T10:24:56+08:00

    当。。。的时候

    • 表足够小 没有实际区别
    • 从统计上讲,无论如何您都会返回大多数行

    第二种情况需要排位赛

    • 如果索引覆盖,索引扫描将替换索引查找
    • 需要键/书签查找的具有许多行的索引查找或扫描会很昂贵,而表扫描可能会更好

    最后

    • 对于聚集索引,索引扫描和表扫描几乎相同
    • 11
  2. Best Answer
    user529707
    2010-12-10T10:20:21+08:002010-12-10T10:20:21+08:00

    当记录的选择性非常高时,全表扫描总是比通过索引扫描更好。

    http://www.techipost.com/single-index-versus-full-table-scan/

    由 gbn 编辑:

    例如,如果需要许多键查找(例如,非聚集索引到非键数据的聚集索引),优化器可能会决定更容易扫描表/聚集索引。

    或者您在索引列中没有很多不同的值

    • 7
  3. marc_s
    2010-12-10T10:20:42+08:002010-12-10T10:20:42+08:00

    如果表

    • 非常小
    • 进行索引扫描,然后对基表进行多次书签查找的成本比全表扫描更昂贵
    • 6
  4. Cade Roux
    2010-12-10T10:21:02+08:002010-12-10T10:21:02+08:00

    以什么方式更好?

    如果索引没有覆盖,优化器可能会选择表扫描,因为索引扫描仍然需要通过书签查找来增强。

    在这些情况下,索引不佳的表并不比未索引的表好。

    http://www.sqlservercentral.com/articles/Performance+Tuning/bookmarklookups/1899/

    • 4

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

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

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

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