sql 优化

select
trim(store.odrim080_strid) odrim080_strid,
         trim(store.odrim080_strshowcd) || ' - ' ||
         trim(store.odrim080_stracnm) odrim080_stracnm
  from odrim080_store store
 where 1 = 1
   AND store.ODRIM080_STATUS = '1'
   and exists (select 1 from odrm023_autoset where store.odrim080_strid = odrm023_orgid)
 order by odrim080_stracnm
 数据库 odrim080_store 有两千数据,odrm023_autoset 有4百万数据的情况下 执行结果为 6.5秒

原因是:前面那个sql要080和023完全关联,这样出的数据量是2千*4百万,然后再distinct

 
 select /*+ rule*/ distinct trim(store.odrim080_strid) odrim080_strid,
                trim(store.odrim080_strshowcd) || ' - ' ||
                trim(store.odrim080_stracnm) odrim080_stracnm
  from odrim080_store store,odrm023_autoset
 where 1 = 1
 and store.odrim080_strid = odrm023_autoset.odrm023_orgid
   AND store.ODRIM080_STATUS = '1'
 order by odrim080_stracnm

 数据库 odrim080_store 有两千数据,odrm023_autoset 有4百万数据的情况下 执行结果为 16.5秒

后面是用080中的2千条,分别到023里找一下,只要有记录就ok,不需要出023里全部数据。而且080里strid是主键,也就不需要distinct

posted @ 2011-04-08 10:39  aspc  阅读(246)  评论(0编辑  收藏  举报