
Oracle SQL优化
文章平均质量分 86
Oracle SQL优化
lsdb
这个作者很懒,什么都没留下…
展开
-
Oracle SQL优化案例-查询Null值走索引
所以通过复合索引和至少一个非空列属性,Oracle 可以保证所有其他列的每个空值都包含在索引中,如果是IS NULL的查询可能用到此索引。如果一张表里面假设A 字段Null值很多并且A上创建了索引,如果查询 A is NULL的结果,这样子走全表扫描也是更高效的方式。也就是创建一个复合索引,其中一个值是带有 NULL 的列,另一个值只是一个常量的复合索引。IDX_PCT_FREE3 --》(pct_free, ' ') --》7 --》明显要比用owner的组合索引要小。案例是这么个简单的案例。原创 2024-05-12 11:06:42 · 1066 阅读 · 0 评论 -
Oracle等待事件-db file parallel read
但是在OLTP系统里面看到这个等待事件的时候,大概率需要对SQL进行优化(db文件在并行读取)。db file parallel read是指当进程并行发出多个 I/O 请求以将数据文件的块读取到内存中,并等待所有请求完成时,就会发生数据库文件并行读等待。:假如Oracle 知道它必须读取多个不相邻的块(块来自不同的随机文件和位置),并且无法继续处理单个块的结果,就会发生并行读等待。:在版本11G2中,如果系统中大量的db file parallel read等待,要注意是不是碰到了bug。原创 2024-03-24 21:46:48 · 3078 阅读 · 0 评论 -
Oracle等待事件-db file scattered read
由参数_index_prefetch_factor 和_db_file_noncontig_mblock_read_count 控制。4.合理的配置参数设置,DB_FILE_MULTIBLOCK_READ_COUNT(影响响全表扫描一次IO的数量,增大这个参数相当于减少IO次数)和 optimizer_index_cost_adj(CBO是倾向全表扫描还是走索引)SQL语句在进行全表扫描的时候, Oracle进程一次最多读取 DB_FILE_MULTIBLOCK_READ_COUNT个连续的块。原创 2024-03-20 14:55:04 · 7316 阅读 · 0 评论 -
Oracle等待事件-db file sequential read
P1: The absolute file number (文件号) ,P2: The block being read (first block#号) 通过P1,P2两个参数得到对象名和分区名 P3: The number of blocks (should be 1) block数量,通常为1 如果P3 > 1,则这是多块读取。很多情况下这个等待的问题不是很严重.上面的2到5条一般不会是问题的主要原因(也不排除是上面的原因,可以用下面sql查询分析)。2.优化sql语句,减少不必要的块读取。原创 2024-03-19 11:16:37 · 8141 阅读 · 0 评论