Ton*_*ews 13
基于集合的编程基于集合的数学概念,并且具有一次处理整个集合的运算符.程序(RBAR)编程更多地基于文件和记录的传统计算机概念.因此,要将X部门所有员工的工资提高10%:
基于集合:
UPDATE employees SET salary = salary * 1.10 WHERE department = 'X';
Run Code Online (Sandbox Code Playgroud)
程序(极端例子,伪代码):
OPEN cursor FOR SELECT * FROM employees;
LOOP
FETCH cursor INTO record;
EXIT WHEN (no more records to fetch);
IF record.department = 'X' THEN
UPDATE employees
SET salary = salary * 1.10
WHERE employee_id = record.employee_id;
END IF
END LOOP
CLOSE cursor;
Run Code Online (Sandbox Code Playgroud)
在程序版本中,一次只更新一个员工行; 在基于集合的版本中,"部门X中的一组员工"中的所有行都会立即更新(就我们而言).
不确定这会增加你已经在你的链接中读到的内容,但我想我会有机会看到它!
我将指出基于集合的处理可能涉及循环.如果你想在一个基于集合的进程中加载一百万条记录时批量处理而不是捆绑多个表,你可以遍历批量记录,这比一次操作一行的游标更快,对于你的数据库而言,可能比做一个巨大的insert语句要好得多.
有些RBAR进程看起来不像游标或循环.这些将包括相关子查询和许多用户定义的函数.
| 归档时间: |
|
| 查看次数: |
4422 次 |
| 最近记录: |