请教下这是为什么

yzf86211861 2016-11-10 11:13:17

select * 耗时1秒不到

select 具体要的字段 19秒

不是一直说 写具体字段会快嘛?



select
A.palletid
,A.LOTID,
replace(B.Bcr_Mod_Subtype,'xxx',A.POWER_GRADE) Bcr_Mod_Subtype,
A.SITEID,
A.PRODUCT_DATE,
case when A.SITEID='1014' then 'China' else ' ' end As Modulepalace,
'Hanwha Solar' CellManufacturer,
'China' cellpalace,
A.POWER_GRADE,
E.IMAX,
E.VMAX,
E.Isc,
E.Voc,
E.FF,
E.Pmax
from (
select t.*,s.palletid from cim_lot t
inner join
(
select lotid,x.palletid from wM_LOT x where x.palletid
in
(
select * FROM TABLE(CAST(COMMON_PKG.FC_SplitToString(p_pallet, ',') AS Split_tbl))

)
) s on s.LOTID=t.LOTID
) A
left join PM_PRODUCTORDER B on A.Origin_Product_Order_No=B.PRODUCT_ORDER_NO AND A.SITEID = B.SITEID
left join PM_BARCODEID_INFO C on B.PRODUCT_ORDER_NO=C.PRODUCT_ORDER_NO AND B.SITEID = C.SITEID
left join PM_DCOLL_FLASH E on E.LOTID=A.LOTID AND A.SITEID = E.SITEID
AND A.Siteid='1014'
AND E.Comments='Y'
order by A.palletid
,A.LOTID
;
...全文
239 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
js14982 2016-11-10
  • 打赏
  • 举报
回复
看看是什么索引,+hint 试试强制走索引
js14982 2016-11-10
  • 打赏
  • 举报
回复
看到你的执行计划了,你用*的时候走了索引
yzf86211861 2016-11-10
  • 打赏
  • 举报
回复
引用 3 楼 js14982 的回复:
你的字段中还有函数,进行了转换也会耗时的
我写一个 A.LOTID 字段 也是一样 比 写 SELECT * 慢好多 亲测.
yzf86211861 2016-11-10
  • 打赏
  • 举报
回复
引用 2 楼 js14982 的回复:
select * 的查询在内存中吧,查的时候直接调用了? 就是说原来有执行过这个语句,oracle会把数据加载进内存中?
都是第一次执行的查询结果 没有在缓存中,我才觉得很奇怪.
js14982 2016-11-10
  • 打赏
  • 举报
回复
你的字段中还有函数,进行了转换也会耗时的
js14982 2016-11-10
  • 打赏
  • 举报
回复
select * 的查询在内存中吧,查的时候直接调用了? 就是说原来有执行过这个语句,oracle会把数据加载进内存中?
yzf86211861 2016-11-10
  • 打赏
  • 举报
回复
对这种 SQL 优化 不是很懂 ,新手请教
yzf86211861 2016-11-10
  • 打赏
  • 举报
回复
引用 7 楼 js14982 的回复:
看看是什么索引,+hint 试试强制走索引
是这样加吗 没什么用 select /*+index(PM_DCOLL_FLASH IDX7_PM_DCOLL_INDEX2) */ A.palletid ,A.LOTID, A.SITEID, A.PRODUCT_DATE, A.POWER_GRADE, E.IMAX, E.VMAX, E.Isc, E.Voc, E.FF, E.Pmax 没什么用

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧