互联网服务

处女帖!NLJOIN后,cost,io 剧增

三表关联,关联字段都有索引。不明白,为什么左下 NL join后,cpu和io 会剧增。。
参与21

20同行回答

zhangzongjunzhangzongjun数据库管理员IBM
SYNCPOSFLAG 应该是字符型,试试如下修改:RETORD.SYNCPOSFLAG=‘0’这个SQL 的总记录数是 大概 “12850” 条吗?显示全部
SYNCPOSFLAG 应该是字符型,试试如下修改:

RETORD.SYNCPOSFLAG=‘0’

这个SQL 的总记录数是 大概 “12850” 条吗?收起
软件开发 · 2013-06-28
浏览1076
宝贝敏敏宝贝敏敏数据库管理员苏宁电器
回复 19# hczzhong     thank you for your answer显示全部
回复 19# hczzhong


    thank you for your answer收起
互联网服务 · 2013-06-26
浏览1122
hczzhonghczzhong售前工程师CN
tmp(row#,...)max and index on retstord_item_id desc better:(显示全部
tmp(row#,...)
max and index on retstord_item_id desc better:(收起
IT分销/经销 · 2013-06-18
浏览1083
hczzhonghczzhong售前工程师CN
your sql has only one predicate:Where retord.SYNCPOSFLAG=0and plan has a decfloat apply to it.  AND (DECFLOAT(Q2.SYNCPOSFLAG, '............') = 0)seem syncposflag is a char/varcharwrite your predicate as syncposflag = '0'change  i...显示全部
your sql has only one predicate:Where retord.SYNCPOSFLAG=0
and plan has a decfloat apply to it.
  AND (DECFLOAT(Q2.SYNCPOSFLAG, '............') = 0)
seem syncposflag is a char/varchar
write your predicate as syncposflag = '0'

change  index design:
CREATE UNIQUE INDEX "OMSADM  "."I_RETORDER_11" ON "OMSADM  "."SO_RET_ORDER"
                ("RETORD_ITEM_ID" DESC)
                INCLUDE ("SYNCPOSFLAG" )

and add 'optimize for 1 row'收起
IT分销/经销 · 2013-06-18
浏览1084
宝贝敏敏宝贝敏敏数据库管理员苏宁电器
回复 15# zhmwang 那这样的tabscan,sort有没有办法优化或避免?显示全部
回复 15# zhmwang
那这样的tabscan,sort有没有办法优化或避免?收起
互联网服务 · 2013-06-14
浏览1106
zhmwangzhmwangPDOceanBase
回复 10# 宝贝敏敏     不好意思,看错了.    即使数据已经在内存里, tablescan and sort仍然是cpu的杀手。显示全部
回复 10# 宝贝敏敏


    不好意思,看错了.
    即使数据已经在内存里, tablescan and sort仍然是cpu的杀手。收起
互联网服务 · 2013-06-14
浏览1082
宝贝敏敏宝贝敏敏数据库管理员苏宁电器
回复 12# leo   这个索引 I_RETORDER_11 是用来关联的吧,RETORD_ITEM_ID是连接列。显示全部
回复 12# leo


  这个索引 I_RETORDER_11 是用来关联的吧,RETORD_ITEM_ID是连接列。收起
互联网服务 · 2013-06-14
浏览1108
宝贝敏敏宝贝敏敏数据库管理员苏宁电器
回复 11# leo $db2 "select count(*) from omsadm.SO_RET_ORDER with ur"1          -----------     350966  1 record(s) selected.===========$db2 "select count(distinct SYNCPOSFLAG ) from omsadm.SO_RET_ORDER...显示全部
回复 11# leo
$db2 "select count(*) from omsadm.SO_RET_ORDER with ur"
1         
-----------
     350966

  1 record(s) selected.


===========
$db2 "select count(distinct SYNCPOSFLAG ) from omsadm.SO_RET_ORDER with ur"
1         
-----------
          2
  1 record(s) selected.收起
互联网服务 · 2013-06-14
浏览1093
leo_wynleo_wyn商业智能工程师Security
CREATE UNIQUE INDEX "OMSADM  "."I_RETORDER_11" ON "OMSADM  "."SO_RET_ORDER"                 ("RETORD_ITEM_ID" ASC)               &...显示全部
CREATE UNIQUE INDEX "OMSADM  "."I_RETORDER_11" ON "OMSADM  "."SO_RET_ORDER"
                ("RETORD_ITEM_ID" ASC)
                 INCLUDE ("SYNCPOSFLAG" )

这是索引中的 include 是为了 select, 一般不会作为谓词过滤收起
系统集成 · 2013-06-14
浏览1071
leo_wynleo_wyn商业智能工程师Security
retord.SYNCPOSFLAG=0  -- 这个谓词条件过滤的记录多吗?显示全部
retord.SYNCPOSFLAG=0  -- 这个谓词条件过滤的记录多吗?收起
系统集成 · 2013-06-14
浏览1051

提问者

宝贝敏敏
数据库管理员苏宁电器

问题状态

  • 发布时间:2013-06-13
  • 关注会员:1 人
  • 问题浏览:9722
  • 最近回答:2013-06-28
  • X社区推广