高手请进,sql优化

[复制链接]
查看11 | 回复9 | 2011-1-4 10:35:48 | 显示全部楼层 |阅读模式
SELECT ROWID, job_num1, z_part_num, part_num, part_num1, des_num, job_num,
des_size, des_p, name, piece, mat, unit_w, type_code, bj_code, des_work,
ymd, nanum
FROM list_temp
WHERE nanum = 1
ORDER BY REPLACE(job_num, 'M');
执行计划为:
SELECT STATEMENT, GOAL = CHOOSE Cost=738 Cardinality=11254 Bytes=1192924
SORT ORDER BY Cost=738 Cardinality=11254 Bytes=1192924
TABLE ACCESS FULL Object owner=DSJ Object name=LIST_TEMP Cost=673 Cardinality=11254 Bytes=1192924
2.建立索引,优化SQL
create index list_temp_ls2 on list_temp(nanum,REPLACE(job_num, 'M'))
tablespace mrp_5_idx;
建完索引后,再执行SQL,执行计划变为:
SELECT STATEMENT, GOAL = CHOOSE Cost=7 Cardinality=11254 Bytes=1192924
TABLE ACCESS BY INDEX ROWID Object owner=DSJ Object name=LIST_TEMP Cost=7 Cardinality=11254 Bytes=1192924
INDEX RANGE SCAN Object owner=DSJ Object name=LIST_TEMP_LS2 Cost=2 Cardinality=11254
成本为7,已经优化了。
3、重新分析表和索引后,再执行SQL语句,奇怪,执行计划又回原来的:
analyze table list_temp compute statistics;
analyze index list_temp_ls compute statistics;
执行SQL语句,执行计划又变回去了:
SELECT STATEMENT, GOAL = CHOOSE Cost=738 Cardinality=11254 Bytes=1192924
SORT ORDER BY Cost=738 Cardinality=11254 Bytes=1192924
TABLE ACCESS FULL Object owner=DSJ Object name=LIST_TEMP Cost=673 Cardinality=11254 Bytes=1192924
成本为738,又不优化了。
问题:我见索引后,成本从738到3优化了SQL语句,可是为什么我
马上执行分析表和索引后,SQL语句又不优化了那?
????????请高手指点
回复

使用道具 举报

千问 | 2011-1-4 10:35:48 | 显示全部楼层
analyze table list_temp compute statistics for table for columns for all indexes for all indexed columns ;
执行上面这样的分析语句,再执行sql呢?
回复

使用道具 举报

千问 | 2011-1-4 10:35:48 | 显示全部楼层
nanum = 1 该条件的选择性怎样?
回复

使用道具 举报

千问 | 2011-1-4 10:35:48 | 显示全部楼层
SELECT ROWID, job_num1, z_part_num, part_num, part_num1, des_num, job_num,
des_size, des_p, name, piece, mat, unit_w, type_code, bj_code, des_work,REPLACE(job_num, 'M')b
ymd, nanum
FROM list_temp
WHERE nanum = 1
order by b
回复

使用道具 举报

千问 | 2011-1-4 10:35:48 | 显示全部楼层
像2 楼那样分析
回复

使用道具 举报

千问 | 2011-1-4 10:35:48 | 显示全部楼层
nanum = 1 该条件的选择性怎样?
什么意思?你是说只为列nanum建索引吗?
回复

使用道具 举报

千问 | 2011-1-4 10:35:48 | 显示全部楼层
最初由 swz_19981018 发布
[B]nanum = 1 该条件的选择性怎样?
什么意思?你是说只为列nanum建索引吗? [/B]
应该是问这个列有无所引吧
回复

使用道具 举报

千问 | 2011-1-4 10:35:48 | 显示全部楼层
执行了analyze table list_temp compute statistics for table for columns for all indexes for all indexed columns ;
问题依然存在呀。。。
回复

使用道具 举报

千问 | 2011-1-4 10:35:48 | 显示全部楼层
最初由 swz_19981018 发布
[B]nanum = 1 该条件的选择性怎样?
什么意思?你是说只为列nanum建索引吗? [/B]

是问你nanum =1的记录占全体记录的比例
回复

使用道具 举报

千问 | 2011-1-4 10:35:48 | 显示全部楼层
你是想用位图索引吗?
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行