[SQL] SQL에 대한 RBAR 대 설정 기반의 프로그래밍
SQLSQL에 대한 RBAR 대 설정 기반의 프로그래밍
RBAR에이 링크를 읽고이, RBAR의 나의 이해는이 금액 데 :
나는 누군가가 세트 기반 프로그래밍 (SQL의 컨텍스트 내에서) 무엇에 관한 더 우아한 설명이있는 경우 내가 해달라고 이유입니다 좀 전액이 소리를 알고있다.
해결법
-
==============================
1.설정 기반의 프로그래밍은 일련의 수학적 개념에 기반하고 연산자를 가지고있다 한 번에 전체 집합에 일이. 절차 (RBAR) 프로그램은 파일과 기록의 전통적인 컴퓨터의 개념에 더 기반으로합니다. 그래서 10 % 부서 X에있는 모든 직원의 급여를 증가 :
설정 기반의 프로그래밍은 일련의 수학적 개념에 기반하고 연산자를 가지고있다 한 번에 전체 집합에 일이. 절차 (RBAR) 프로그램은 파일과 기록의 전통적인 컴퓨터의 개념에 더 기반으로합니다. 그래서 10 % 부서 X에있는 모든 직원의 급여를 증가 :
설정은 기반 :
UPDATE employees SET salary = salary * 1.10 WHERE department = 'X';
절차 (극 예, 의사 코드) :
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;
절차 버전에서는 하나의 직원 행은 한 번에 업데이트되는; 집합 기반 버전에서 "부서 X 직원의 세트"의 모든 행은 (우리가 우려까지로) 한 번에 업데이트됩니다.
확실하지이 이미 링크에서 읽고 무슨에 무엇을 추가,하지만 난 그것을 탄을 거라고 생각했다!
-
==============================
2.나는 집합 기반 처리가 루프를 포함 할 수 있음을 지적 할 것이다. 당신은 당신이 한 세트 기반의 과정에서 그들에 만 개 기록을로드하는 동안 배치가 아니라 여러 개의 테이블까지 타이에서 처리하려는 경우, 당신은이 빨리 한 번에 하나 개의 행을 운영하고 커서보다는 기록의 배치를 통해 루프 수 하나의 거대한 삽입 문을 것보다 데이터베이스에 대한 훨씬 더 할 수있다.
나는 집합 기반 처리가 루프를 포함 할 수 있음을 지적 할 것이다. 당신은 당신이 한 세트 기반의 과정에서 그들에 만 개 기록을로드하는 동안 배치가 아니라 여러 개의 테이블까지 타이에서 처리하려는 경우, 당신은이 빨리 한 번에 하나 개의 행을 운영하고 커서보다는 기록의 배치를 통해 루프 수 하나의 거대한 삽입 문을 것보다 데이터베이스에 대한 훨씬 더 할 수있다.
일부 RBAR 프로세스 중 하나 커서 또는 루프처럼 보이지 않는다. 이러한 상관 관계 서브 쿼리 많은 사용자 정의 함수를 포함 할 것이다.
from https://stackoverflow.com/questions/1687512/rbar-vs-set-based-programming-for-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] .NET 코드에서 중지 SQL 쿼리 실행 (0) | 2020.04.22 |
---|---|
[SQL] 문자열에서 데이터베이스 쿼리를 구성 할 때 ColdFusion은 추가 따옴표를 추가 (0) | 2020.04.22 |
[SQL] 관계형 데이터베이스 설계 질문 - 대리 - 키 또는 자연 키? (0) | 2020.04.22 |
[SQL] 다른 컬럼의 MySQL의 그룹에 의해 합계 총 가치 (0) | 2020.04.22 |
[SQL] FRM과 IBD 파일에서 테이블 구조를 복원 (0) | 2020.04.22 |