查看: 6724|回复: 33

sql走索引,怎么始终有物理读?

[复制链接]
论坛徽章:
16
奥运会纪念徽章:跆拳道
日期:2008-10-24 13:12:17马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02优秀写手
日期:2013-12-18 09:29:092010新春纪念徽章
日期:2010-03-01 11:06:132010年世界杯参赛球队:丹麦
日期:2010-01-12 11:21:352010年世界杯参赛球队:科特迪瓦
日期:2010-01-04 11:48:04祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2009-10-08 01:01:03ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21
跳转到指定楼层
1#
发表于 2010-5-11 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
表很小,只有200多条记录。查看执行计划,走了索引,但一直有物理读。不知道什么原因。

其他的查询都正常,就这一个sql有这个问题。

  1. sql> r
  2.   1  select count(*)
  3.   2  from t_edu_member_info
  4.   3* where status='1' and xs_zy='1'


  5. 执行计划
  6. ----------------------------------------------------------
  7.    0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=1 Card=1 Bytes=10)
  8.    1    0   SORT (AGGREGATE)
  9.    2    1     FILTER
  10.    3    2       INDEX (RANGE SCAN) OF 'IND_T_PREBM4' (NON-UNIQUE) (Cos
  11.           t=1 Card=5 Bytes=50)





  12. 统计信息
  13. ----------------------------------------------------------
  14.          25  recursive calls
  15.          14  db block gets
  16.           3  consistent gets
  17.           1  physical reads
  18.         972  redo size
  19.         375  bytes sent via SQL*Net to client
  20.         372  bytes received via SQL*Net from client
  21.           2  SQL*Net roundtrips to/from client
  22.           1  sorts (memory)
  23.           0  sorts (disk)
  24.           1  rows processed
复制代码
论坛徽章:
16
奥运会纪念徽章:跆拳道
日期:2008-10-24 13:12:17马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02优秀写手
日期:2013-12-18 09:29:092010新春纪念徽章
日期:2010-03-01 11:06:132010年世界杯参赛球队:丹麦
日期:2010-01-12 11:21:352010年世界杯参赛球队:科特迪瓦
日期:2010-01-04 11:48:04祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2009-10-08 01:01:03ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21
2#
 楼主| 发表于 2010-5-11 17:07 | 只看该作者
alter table t_edu_member_info cache;
还是有物理读,这表才245条记录.

使用道具 举报

回复
论坛徽章:
33
ITPUB元老
日期:2009-03-11 15:35:03咸鸭蛋
日期:2011-11-06 22:20:25紫蛋头
日期:2011-12-27 22:15:052012新春纪念徽章
日期:2012-01-04 11:49:542014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11红宝石
日期:2014-06-03 13:13:19
3#
发表于 2010-5-11 17:07 | 只看该作者
走索引和物理读有必然的联系吗?

使用道具 举报

回复
论坛徽章:
33
ITPUB元老
日期:2009-03-11 15:35:03咸鸭蛋
日期:2011-11-06 22:20:25紫蛋头
日期:2011-12-27 22:15:052012新春纪念徽章
日期:2012-01-04 11:49:542014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11红宝石
日期:2014-06-03 13:13:19
4#
发表于 2010-5-11 17:08 | 只看该作者
alter table t_edu_member_info move 一下,再执行多次看看

使用道具 举报

回复
论坛徽章:
16
奥运会纪念徽章:跆拳道
日期:2008-10-24 13:12:17马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02优秀写手
日期:2013-12-18 09:29:092010新春纪念徽章
日期:2010-03-01 11:06:132010年世界杯参赛球队:丹麦
日期:2010-01-12 11:21:352010年世界杯参赛球队:科特迪瓦
日期:2010-01-04 11:48:04祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2009-10-08 01:01:03ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21
5#
 楼主| 发表于 2010-5-11 17:10 | 只看该作者
没有必然联系。但是一般来说如果是全表扫描,那么读的数据在冷端,很容易从内存中清除,再次查询时又物理读。

我强调这个,因为这sql走索引,而且就200多条数据,为什么每次都会有物理读?

使用道具 举报

回复
论坛徽章:
16
奥运会纪念徽章:跆拳道
日期:2008-10-24 13:12:17马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02优秀写手
日期:2013-12-18 09:29:092010新春纪念徽章
日期:2010-03-01 11:06:132010年世界杯参赛球队:丹麦
日期:2010-01-12 11:21:352010年世界杯参赛球队:科特迪瓦
日期:2010-01-04 11:48:04祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2009-10-08 01:01:03ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21
6#
 楼主| 发表于 2010-5-11 17:19 | 只看该作者
move了一下,反复执行多次。执行计划依然没变。
不明白怎么老是有物理读和1个排序、。

使用道具 举报

回复
论坛徽章:
16
数据库板块每日发贴之星
日期:2008-07-20 01:02:07IT宝贝
日期:2011-12-07 11:07:07ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22ITPUB十周年纪念徽章
日期:2011-09-27 16:33:28灰彻蛋
日期:2011-06-18 13:23:482010广州亚运会纪念徽章:足球
日期:2011-04-28 06:55:50ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010年世界杯参赛球队:墨西哥
日期:2010-05-11 23:32:562010新春纪念徽章
日期:2010-01-04 08:33:08生肖徽章2007版:马
日期:2009-10-23 10:29:42
7#
发表于 2010-5-11 17:25 | 只看该作者
记录这么少,没有必要见索引吧

使用道具 举报

回复
论坛徽章:
33
ITPUB元老
日期:2009-03-11 15:35:03咸鸭蛋
日期:2011-11-06 22:20:25紫蛋头
日期:2011-12-27 22:15:052012新春纪念徽章
日期:2012-01-04 11:49:542014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11红宝石
日期:2014-06-03 13:13:19
8#
发表于 2010-5-11 17:26 | 只看该作者
感觉执行计划不太对,把表分析一下,
set autotrace traceonly
sqlplus 下执行看看

使用道具 举报

回复
论坛徽章:
16
奥运会纪念徽章:跆拳道
日期:2008-10-24 13:12:17马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02优秀写手
日期:2013-12-18 09:29:092010新春纪念徽章
日期:2010-03-01 11:06:132010年世界杯参赛球队:丹麦
日期:2010-01-12 11:21:352010年世界杯参赛球队:科特迪瓦
日期:2010-01-04 11:48:04祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2009-10-08 01:01:03ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21
9#
 楼主| 发表于 2010-5-11 17:37 | 只看该作者
就是用sqlplus执行的,表已分析过

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
10#
发表于 2010-5-11 17:39 | 只看该作者
1.数据缓存太小。
2.能t_edu_member_info是否是表吗?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表