본문 바로가기

분류 전체보기112

SPOOL 연산자 성능 개선 - 3 1. 사전구성 SELECT a.number id , NEWID() txt , DATEADD(dd, a.number-1, '2020-01-01') date INTO TB_FSpool04 FROM master..spt_values a WHERE a.type = 'P' AND a.number BETWEEN 1 AND 100 ; CREATE CLUSTERED INDEX CIDX_FSpool04 ON TB_FSpool04 (date); SELECT ROW_NUMBER () OVER (ORDER BY a.number) id , CHAR(LEFT(CONVERT(NVARCHAR(4), high), 1) +64) code , RIGHT(number * high * low, 2) value INTO TB_SSpool04 .. 2022. 11. 30.
일론머스크 생산성 6원칙 #1 대규모 미팅은 피하라 참여자가 많은 미팅은 시간과 에너지의 낭비 토론을 방해 사람들을 방어적으로 만듦 모든 사람이 기여하기엔 시간이 부족 모든 사람에게 가치를 주는게 아니라면 대규모 미팅을 잡지 말 것 #2 미팅에 기여하는게 없다면 중간에라도 나가라 미팅이 당신의 "자료나 정보(Input), 가치, 의사결정"을 필요로 하지 않는다면 미팅에 참여할 이유가 없음 미팅 중간에 나가는 것은 무례한게 아님. 사람들의 시간을 낭비하는게 무례한 짓 #3 명령 체계(Chain of Command)는 잊어라 동료들과 직접 대화할 것 슈퍼바이저나 매니저를 통하지 말 것 빠른 소통이 빠른 의사 결정을 만듦 빠른 의사결정은 곧 경쟁 우위임 #4 똑똑해 보이려 하지말고, 명확히 할 것 기술 용어(Technical Jarg.. 2022. 11. 28.
SPOOL 연산자 성능 개선 - 2 1. 사전구성 SELECT a.number num , CHAR(LEFT(b.high, 1) + 64) txt , LEFT(a.low, 1) group_id INTO TB_FSpool03 FROM master..spt_values a, master..spt_values b WHERE a.type = 'P' AND a.number BETWEEN 1 AND 100 AND b.type = 'P' AND b.number BETWEEN 1 AND 100 ; CREATE INDEX NIDX01_FSpool03 ON TB_FSpool03 (group_id) INCLUDE (num, txt); table_name index_name index_description Is_Unique indexed_columns inclu.. 2022. 11. 24.
NOT IN 조건으로 사용된 서브쿼리 성능 이슈 1. 사전구성 SELECT c.id , CASE WHEN c.id 2022. 11. 22.
SPOOL 연산자 성능 개선 - 1 1. 사전구성 SELECT a.number id , NEWID() txt , DATEADD(dd, a.number-1, '2020-01-01') date INTO TB_FSpool02 FROM master..spt_values a, master..spt_values b WHERE a.type = 'P' AND a.number BETWEEN 1 AND 10 AND b.type = 'P' AND b.number BETWEEN 1 AND 5 ; CREATE CLUSTERED INDEX CIDX_FPool02 ON TB_FSpool02 (date); SELECT ROW_NUMBER () OVER (ORDER BY a.number) id , CAST(LEFT(a.number*b.high, 2) AS INT) va.. 2022. 11. 21.
메모리 매핑 (Memory-mapped file) ※ memory-mapped 파일은 가상 메모리의 일부다. 가상 메모리는 파일 또는 파일과 비슷한 리소스의 일부와 byte 단위로 상관관계가 직접 할당된다. 이 리소스는 일반적으로 디스크에 물리적 존재하는 파일이다. 하지만 디바이스, 공유 메모리, 운영 체제가 file descriptor로 참조할 수 있는 기타 리소스일 수도 있다. 파일과 메모리간 상관관계가 만들어지면, 애플리케이션은 매핑된 부분을 진짜 메모리처럼 사용할 수 있다. ※ memory-mapped 파일의 이점은 특히 대용량 파일에서 사용될 때, I/O 성능이 향상되는 점이다. 메모리 맵이 항상 페이지 크기에(4KiB) 맞춰 정렬되므로, 작은 파일의 경우 memory-mapped 파일은 여유 공간을 낭비할 수 있다. 따라서 5KiB 파일은 8.. 2022. 11. 20.
IN 조건절 성능 이슈 1. 사전구성 CREATE TABLE TB_ORFirst (seq INT, date DATETIME); CREATE TABLE TB_ORSecond (seq INT, gid INT, txt NVARCHAR(36) DEFAULT (NEWID() ) ); INSERT INTO TB_ORFirst SELECT ROW_NUMBER() OVER (ORDER BY a.number) seq , DATEADD(d, a.number, '2020-01-01') date FROM master..spt_values a (NOLOCK) , (SELECT number FROM master..spt_values (NOLOCK) WHERE type = 'P' AND number 2022. 11. 20.
내부 조인 스캔 범위 개선 (EXISTS) 1. 사전 구성 SELECT *, CONVERT(INT, RIGHT(num,1)) AS code INTO TB_DATA11 FROM (SELECT ROW_NUMBER() OVER (ORDER BY A.number) AS num , LEFT(CONVERT(CHAR(8), DATEADD(HH, A.number, '2020-01-01'), 112), 6) AS date FROM master..spt_values A , (SELECT * FROM master..spt_values B WHERE type = 'P' AND number '20200101' GROUP BY A.code ORDER BY A.code ; 최종 행 수가 7건 뿐임에도 [TB_DATA11] 테이블과 내부 조인이 수행되면서 약 45만건의 행을.. 2022. 11. 17.
CROSS JOIN 반복 사용 테이블 통합 1. 사전 구성 SELECT ROW_NUMBER () OVER (ORDER BY a.number) seq , CONVERT(INT, RIGHT(a.number*b.number*a.high, 2)) AS value , NEWID() txt , DATEADD(dd, b.number, '2020-01-01') date INTO TB_Sum FROM master..spt_values a, master..spt_values b WHERE a.type = 'P' AND b.type = 'P' AND a.number BETWEEN 1 AND 1000 AND b.number BETWEEN 1 AND 1000 ; CREATE CLUSTERED INDEX CIDX_CNT ON TB_Sum(date) ; 2. AS-IS S.. 2022. 11. 16.
CORSS APPLY 부분 범위 처리 1. 사전 구성 SELECT number id , CASE WHEN number 2022. 11. 14.