数据库优化探索一:数据库优化1
Oracle数据库读取数据的方式1
1全表扫描什么是全表扫描
在数据库中,对无索引的表进行查询一般称为全表扫描
全表扫描是数据库服务器用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止
数据库在进行全表扫描时进行的是多块读取(块为数据库存储的最小单位),也就是说每次从buffercache(缓冲区高速缓存)中读取多块,而不是一次一块的读
无论查询一笔数据还是整个表的所有数据,全表扫描都会把整张表读出来
适用情况:(1)单表查询:※表很小,索引可能就比表还大
※访问的数据占全表数据的百分比很大,索引访问的总成本大于全表扫描的成本
※相对于索引来说,表中的数据排列过于凌乱,索引的clustering_factor(集群因子)很大,导致索引的访问成本剧增
(2)※hashjoin(哈希连接)的时候,内层表和外层表都可以使用全表扫描
※nestloop(嵌套循环)的时候,外层表可以使用全表扫描,内层表一般不用全表扫描
2ROWID(rowid)oracle数据库的表中的每一行数据都有一个唯一的标识符,行号
表明了该行在oracle数据库中的物理具体位置
rowid是一个伪列,一般用不到,但是当需要具体锁定某一行时,它非常有用,因为它的值绝对不会重复
3索引在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容
索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序
数据库使用索引以找到特定值,然后顺指针找到包含该值的行
索引扫描有四种方式:唯一扫描,范围扫描,全扫描,快速扫描
影响Oracle系统性能的因素影响