博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全表扫描
阅读量:7287 次
发布时间:2019-06-30

本文共 613 字,大约阅读时间需要 2 分钟。

在数据库中,对无索引的表进行查询一般称为全表扫描。全表扫描是用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。

 

 

全表扫描的稳定性

相对于索引范围扫描来说,全表扫描的成本是衡定不变的。无论你的查询是想访问一笔数据还是访问整个表的所有数据,全表扫描都会把整张表读出来。而索引范围扫描就不同,因为有了索引这个有序的数据结构做支持,可以只访问需要的索引块和需要的 ,而不是访问整张表。
 

何时适用全表扫描

1. 单表查询
※ 表很小,索引可能就比表还大。
※ 访问的数据占全表数据的百分比很大,索引访问的总成本大于全表扫描的成本。
※ 相对于索引来说,表中的数据排列过于凌乱,表现出来就是索引的 clustering_factor 很大,导致索引的访问成本剧增。
2. 多表连接
※ hash join的时候,内层表和外层表都可以使用全表扫描(对于某个单独的表的访问是否适用全表扫描,这个又回到了单表查询的情况)。
※ nest loop的时候,外层表可以使用全表扫描,内层表一般不用全表扫描。
 
 

全表扫描的成本

全表扫描的成本 = 表的 总数 / 多块读取
一般说来数据库在进行全表扫描时进行的是多块读取,也就是说每次从buffer cache中读取多块,而不是一次一块的读。另外,全表扫描的成本中并不包括对数据进行过滤和计算的成本。也就是说全表扫描的成本仅仅是读取数据的成本,而不包含对数据进行计算,过滤的CPU成本。

转载地址:http://appjm.baihongyu.com/

你可能感兴趣的文章
Docker EE/Docker CE简介与版本规划
查看>>
python 读取excel中的数据
查看>>
(转)java.util.zip.ZipException
查看>>
CENTOS 设置文件夹打开方式:在同一窗口打开文件夹
查看>>
ubuntu 64 装db2 v9.7 server
查看>>
顶级操作系统会议——2009年SOSP会议概况介绍
查看>>
display:table-cell实现两栏自适应布局
查看>>
mysql 读写分离mysql-proxy 代理
查看>>
httpd+tomcat(3) -- mod_jk
查看>>
MySQL:卸载、安装MySQL8.***
查看>>
CentOS 7安装Docker及常用命令
查看>>
VMware Workstation 7.0中文版下载
查看>>
Don’t forget about column projection
查看>>
linux系统修复及忘记密码的处理方法
查看>>
CAS和ABA问题
查看>>
js创建对象的几种常用方式
查看>>
SQL Server AlwaysOn可用性及故障转移
查看>>
Spring Cloud 注册中心高可用搭建
查看>>
js 简单版本号比较
查看>>
Linux用户配置sudo权限(visudo)
查看>>