Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

69

积分

0

好友

13

主题
1#
发表于 2012-6-29 17:07:31 | 查看: 2390| 回复: 0
比如说有两个表A和B 分别有100个块和200个块.
现在从A表提取符合条件的数据,跟B表符合条件的数据JOIN
select c.name,c.student_id,course_name,score
from  
(
  select student_id,name
  from a
  where a.name like '张%'
) c
inner join
(
select b.score,student_id,course_id,course_name
from b
where insert_time >to_date('2012-03-08','YYYY-MM-DD')
) d
on c.student_id=d.student_id


如果没索引,
步骤1 所有的块读到内存中.
步骤2 在内存中进行过滤
步骤3 关联操作
步骤4 把结果运送到PGA内存中

问题 1 内存进行过滤 是进行块过滤还是行过滤,
          如果进行块过滤,包含需要数据的块留下,数据分散在不同块中,也就是说所留下来的块也包含了不需要的数据;
          如果行过滤: 在内存中新开辟缓存,把所需要的数据提取到新内存缓存里?

问题 2 过滤掉不需要的列 是不是在PGA里完成,在发生给客户端的时候.
          因为执行计划最后一步是SELECT 操作?
您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 23:31 , Processed in 0.051801 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569