WIFT | 2020. 12. 06

sol ahn·2020년 12월 7일
0

What I Had Fun Today

목록 보기
5/6
post-thumbnail

[JavaScript]

Array

Array 반복문

i) for loop

for (let i = 0; i < fruits.length; i++){
	console.log(array[i]);
}

ii) for of

for (let i of array){
	console.log(i);
}

iii) forEach

array.forEach((i) => console.log(i));

Array APIs

array.push()
array.pop()
array.join()
array.split()
array.reverse()
array.slice()
array.find()
array.filter()
array.map()
array.some()
array.every()
array.reduce()

JSON

JSON.stringify()
JSON.parse()


[SQL]

결합

✔️ 결합연산

  • 크로스 결합
  • 내부 결합
  • 외부 결합
    왼쪽 외부 결합
    오른쪽 외부 결합
    완전 외부 결합
  • 자기 결합
  • 등가 결합/비등가 결합
  • 자연 결합

결합 알고리즘

1) Nested Loops
중첩 반복을 사용하는 알고리즘

외부 테이블(outer table) or 구동 테이블(driving table) | 내부 테이블(inner table)

구동 테이블의 레코드 하나마다 내부 테이블의 레코드를 하나씩 스캔하여 결합 조건에 맞으면 리턴함.

Nested Loops의 실행 시간은 레코드 수에 비례

구동 테이블이 작을수록 성능 향상 => 내부 테이블의 결합 키 필드에 인덱스가 존재하는 경우

2) Hash
해시(hash): 입력에 대해 어느 정도 유일성과 균일성을 가진 값을 출력하는 함수

작은 테이블을 스캔하고, 결합 키에 해시 함수를 적용해서 해시값으로 변환 -> 다른 테이블을 스캔하고, 결합 키가 해시값에 존재하는지 확인하는 방법으로 결합 수행

해시 테이블은 작을수록 효율적 => 해시 테이블을 만들 때 메모리를 소모

Nested Loops가 효율적으로 작동하지 않는 경우의 차선책!

3) Sort merge
결합 대상 테이블들을 각각 결합 키로 정렬하고, 일치하는 결합 키를 찾으면 결합 수행

대상 테이블을 모두 정렬해야 하므로 많은 메모리를 소비

테이블 정렬을 생략할 수 있는 경우에 효과적

결합은 알고리즘이 복합하기 때문에 실행 계획 변동이 일어나기 쉬움. 따라서 되도록 결합을 사용하지 않는 것이 중요한 전략!

Ref

[유튜브] 드림코딩 자바스크립트 강의
[도서] 미크/윤인성, ⌜SQL 레벨업⌟, 한빛미디어, 2016

profile
아는 만큼 재밌는 개발자 🤓

0개의 댓글