ITPub博客

首页 > 数据库 > 数据库开发技术 > 查找出数据库中默认会以全表扫描方式访问的表

查找出数据库中默认会以全表扫描方式访问的表

原创 数据库开发技术 作者:chensq 时间:2005-07-29 17:37:30 0 删除 编辑
这个查询可以根据初始化参数设置和软件版本,查找出默认情况下会以全表扫描方式访问的表。[@more@]


/*Auth:chensq#itpub.net
Date:2005-07-29 17:43
*/

select segment_name,bytes from dba_segments a,dba_tables b
where bytes<(
case when (select 0 from dual where not exists (select value from v$parameter where name like '%small_table_%'))=0 then
--parameter _small_table_threshold is not seted
(select case when (select SUBSTR(BANNER,6,1) from v$version where banner like 'CORE%')<9 then --lower than 9i
(select value*.02 from v$parameter where name='db_cache_size')
else (bytes/a.blocks)*20--above 9i
end from dual)
else
(select to_number(value) from v$parameter where name like '%small_table_%')
end
)--_small_table_threshold
and a.segment_name=b.table_name


这个查询可以根据初始化参数设置和软件版本,查找出默认情况下会以全表扫描方式访问的表。

理论依据可以参见网上的一些文章(搜索_small_table_threshold)或者《Oracle 9i性能调整》第496~497页。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21072/viewspace-815377/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-03-17

  • 博文量
    10
  • 访问量
    295614