我一直对面向集合的思想不是很理解,虽然看了很多资料
比如我想给表T_TEST某个字段赋予行号的值
下面这个语句
UPDATE T_TEST a
SET a.FIndex = ( SELECT ROWNUM FROM (
SELECT ROWNUM,
FID
FROM T_TEST) b
WHERE b.FID = a.FID
)
这样的语法算面向集合的语法么?
那如果我做成游标,
SELECT ROWNUM,
FID
FROM T_TEST
然后逐个取出去更新原表T_TEST的相同FID行的FIndex值
这样的语法算式面向过程的么?
最后是上面两种语法的比较,我一直有个疑问,难道面向集合的语法就是为了写漂亮的,精简的语句,而执行效率上很糟糕,大多数时候我用游标写存储过程效率要高很多,特别是大批量数据的时候。而用精简的语法往往卡死或者运行很久,特别是UPDATE一类的语句。
我想应该是我没掌握面向集合的精髓,求大神解惑。。。
比如我想给表T_TEST某个字段赋予行号的值
下面这个语句
UPDATE T_TEST a
SET a.FIndex = ( SELECT ROWNUM FROM (
SELECT ROWNUM,
FID
FROM T_TEST) b
WHERE b.FID = a.FID
)
这样的语法算面向集合的语法么?
那如果我做成游标,
SELECT ROWNUM,
FID
FROM T_TEST
然后逐个取出去更新原表T_TEST的相同FID行的FIndex值
这样的语法算式面向过程的么?
最后是上面两种语法的比较,我一直有个疑问,难道面向集合的语法就是为了写漂亮的,精简的语句,而执行效率上很糟糕,大多数时候我用游标写存储过程效率要高很多,特别是大批量数据的时候。而用精简的语法往往卡死或者运行很久,特别是UPDATE一类的语句。
我想应该是我没掌握面向集合的精髓,求大神解惑。。。