最初由 jjzgc 发布
[B]A。SELECT NVL(MAX(SHINVNO),0)+1
FROM SELLHEAD
WHERE SHSYJID = '0001'
B。SELECT NVL(MAX(SHINVNO),0)+1
FROM SELLHEAD
WHERE SHSYJID = 0001
SHINVNO TYPE CHAR(4)
表SELLHEAD中有214万条记录
A、B查出的结果是一样的,可是A需要的时间:1.24seconds,而B需要的时间是:37.1seconds。
请各位帮忙分析一下.是何原故,谢谢了! [/B]
a,可能用到索引,类型匹配。
b,因为值是 0001数字型,oracle 会转换 to_number(shsyjid)=1,
所以会走全表扫描,即使列SHSYJID 上有索引。
|