본문 바로가기

분류 전체보기156

인덱스 사용시 주의사항 인덱스로 사용된 컬럼값 그대로 사용해야만 인덱스가 사용된다. ex) where salary * 10 > 150000;는 인덱스를 못타지만, where salary > 150000 / 10; 은 인덱스를 사용한다 AND연산자는 각 조건들이 읽어와야할 ROW수를 줄이는 역할을 하지만, or 연산자는 비교해야할 ROW가 더 늘어나기 때문에 풀 테이블 스캔이 발생할 확률이 높다. between, like, 등 범위 조건은 해당 컬럼은 인덱스를 타지만, 그 뒤 인덱스 컬럼들은 인덱스가 사용되지 않는다. 인덱스가 늘어날 수록 테이블을 갱신할 때 오버헤드가 커지고, 디스크 공간이 늘어나므로 최적의 인덱스를 찾는 것이 중요하다. PK나 FK 등 무결성 제약이 부여된 키는 기본적으로 인덱스가 같이 생성되므로 중복 생성하.. 2021. 4. 6.
[컴주개] CSE Junior Developer Meetup 6회 비대면 모임 역시나 첫번째 세션에서는 각자 근황 발표가 있었다. 그리고 현지누나의 투자 야수적인(?) 투자 경험 공유기를 들었다 ㅋㅋㅋ 두번째 세션에서는 대수형의 푸쉬서버 관련 발표와, 민수의 gatsbyjs 발표가 있었다. gatsbyjs 정적 사이트 생성 프레임 워크라고 하는데 아마 현 회사에서는 쓸일이 없겠지만, 개인적으로 블로그 사이트 만들때 써먹어 봐야겠다는 생각이 들었다 다음 발표때는 주문흐름에 대해서 내가 발표를 할 예정이다 열심히 준비해야겠다. 2021. 4. 4.
TIMESTAMP의 범위가 2038-01-19 03:14:07까지인 이유 유닉스/리눅스 계열에서 사용되는 TIMESTAMP는 1970년 1월 1일 0시 0분 0초부터 몇초가 지났는지를 나타내는 정수이다. Unix Timestamp가 만들어질 당시 대부분 32bit OS 밖에 존재하지 않았다. (32bit INT 범위 = − 2³¹ ~ 2³¹ − 1) unsigned integer를 사용할 경우 2³² − 1 까지 가능하지만 1970-01-01 이전을 나타낼 수 없었기때문에 signed integer를 사용했다 따라서 1970-01-01 00:00:00에서 2³¹ − 1 초를 더하면 2038-01-19 03:14:07이다. 2021. 4. 3.
문자셋 변환 쿼리 실행 요청시 사용자가 요청한 쿼리 문장의 문자셋(character_set_client)->character_set_connetion으로 변환 후 실행한다. 방식이 같다면 변환하지 않는다. 쿼리 결과 전송시 컬럼의 문자 셋 -> character_set_result로 변환해서 리턴한다. 방식이 같다면 변환하지 않는다. 이모지를 표현할 수 있는 utfmb4 일때는 결과가 잘 보인다. character_set_connection를 ascii 로 이모지를 넣었을때는 올바른 문자가 들어가지 않게 된다. character_set_results를 ascii로 했을 경우에는 제대로 된 쿼리 결과를 얻을 수 없다. 2021. 4. 3.