본문 바로가기

공부44

조회 성능 조회 쿼리 작성 시 SI 초반에는 정확한 데이터를 갖고 오는 게 중요하겠지만, 실데이터가 어느 정도 들어오는 단계에서는 조회 성능이 중요했던 거 같다. 실제로 잘 동작하던 화면이 어느 날 동작을 안 해서 확인해보면 조회 쿼리 성능이 안 나오는 경우가 많았다[1][2]. 가장 최근 경험으로는 통계 화면 관련해서 쿼리 속도가 안 나왔던 적이 있다. 정확한 내용이 기억이 안 나긴 하는데... 처음 작성했던 쿼리가 무척 길었다. 최대한 단순화 시켰고, 다행히 여기서 속도가 좀 돌아왔던 거 같다. 하지만 여기서 속도가 안 나온다면 실행 계획을 확인해보고, 인덱스 생성을 고려해봐야 한다. 인덱스, 힌트 같은 건 BI 프로젝트에서 Oracle을 사용할 때 주로 경험(많이 듣기만...)했었는데 최근 PostgreSQL.. 2024. 11. 5.
Database 경험 많지 않은 IT 경력이지만, 이것저것 몇 가지 관계형 DB(정확히 말하면 DBMS..)를 다뤄보았다. 사실 기껏해봐야 CRUD를 주로 한 거라 구글 검색, 조금 복잡한 건 CHAT GPT로 작성해서 사용했으나 뒤늦게 공부도 할 겸 모르면 모르는대로 조금 남겨본다. 사실 몇 군데 면접을 가면 요즘 때로 DB 차이를 묻기도 해서... Oracle맨 첫 직장에서 주로 사용했었고, 대기업에서 주로 사용한다고 한다(최근 대기업에서는 사용하진 않긴 했는데..).하나의 인스턴스 내 여러 데이터베이스가 아닌 전체 데이터베이스가 존재한다(따라서 쿼리 작성 전에 USE 명령어 사용할 필요 없다). 다만 타 DB와 다르게 User(물리적 컨테이너)와 Schema 개념이 있는데[1][2], 사용자는 스키마를 기준으로 작업을 .. 2024. 11. 5.
객체 병합 앞서 전개구문[1]을 통한 객체 병합에 대해 살펴보았다. 다음 예를 살펴보자. 분명히 복사를 했는데, 기존 객체(store)의 변경이 복사본(copy)에도 영향을 미치고 있다. 이는 전개구문을 통한 복사가 얕은 복사[3]이기 때문이다. 따라서 위처럼 2-Depth의 요소를 재할당해주는 방식으로 복사해야 한다. 외에도 JSON 내장 객체나 lodash 라이브러리를 통해 깊은 복사를 할 수 있다. ------ 1. 원 객체를 변화시키지 않기 위해[2] 전개구문을 사용한다. 2. 불변성을 위해 배열의 경우 concat, filter, map 등의 함수를 이용한다. 3. 얕은 복사의 방법에는 전개구문 외 Object.assign을 사용할 수도 있다. 2023. 4. 11.
배열의 특성 자바스크립트에서는 배열이라는 타입이 존재하지 않으며, 배열의 타입을 찍어보면 객체가 나온다. 위에서 보다시피, 자바스크립트의 배열은 인덱스와 length 속성이 있는 특수한 객체이다. 객체다 보니[1], 숫자 이외의 속성을 추가할 수 있으나 length는 변하지 않았음을 확인할 수 있다. for-in으로 출력을 해보면 배열이 아닌 값까지 출력되었음을 확인할 수 있다[2]. 그래서 위와 같이 for-of 혹은 forEach[3][4]를 사용하는 게 좋다. 한편 유사배열이라는 것이 있다. 아래와 같이 배열처럼 인덱스를 통한 접근이 가능하다. 배열과 유사한 생김새를 지녔지만, 유사배열은 배열이 아니기 때문에 forEach 같은 배열의 메소드를 사용할 수 없다. 또한 유사배열은 이터러블[5]도 아니기 때문에 f.. 2023. 3. 18.