Select Nvl(Max(a.记录状态), 0) As 状态, a.物品id As 物品id
From 物品使用记录 a,
(Select Extractvalue(Column_Value, '/ROW/单据号') As No, Extractvalue(Column_Value, '/ROW/库房ID') As 库房id
From Table(Xmlsequence(Extract(Xmltype(:x_数据), '/ROWSET/ROW')))) g
Where a.No = g.No And a.库房id = g.库房id And a.记录性质 = 2 And a.公司id = :公司id
Group By a.物品id
可以,将子查询放入临时表,对where的字段加上索引,用空间换时间。
你这个是用的oracle里的xml来写的把,找个不容易优化,因为xml操作本来就是要消耗大量内存的,不管是oracle,还是sql server里,涉及到xml的解析的sql,只要数据量稍微大一些,速度就会特别慢的