본문 바로가기
반응형

MSSQL7

[MSSQL] 누적값 구하기! (셀프조인!Self JOIN) 활용! 안녕하세요! 오늘은 누적값을 구하는 쿼리에 대해 알아보려합니다. 누적값은 현업에서도 많이 사용되고, 보통 날짜를 기준으로 해당하는 누적값을 구하거나, 그냥 일반적으로 상품 판매 누적값을 구하기도 합니다. 그렇다면 누적값을 구하는 방법과 그 원리에 대해 설명해보겠습니다. 누적값은 현재 1행에서 시작해서 2행으로 넘어갈 때, 전 행의 값을 함께 가져와야 구할 수 있습니다. 그럼 이 논리에 따라서 시작점을 잡아보겠습니다. (1) 1행의 값이 존재(2) 2행으로 넘어감(3) 2행에서는 1행의 값과 2행의 값을 동시에 가지고 있어야함(4) 3행으로 넘어감(5) 3행에서는 1행, 2행의 값과 3행의 값을 동시에 가지고 있어야함 이러한 로직대로 누적값을 구할 수 있습니다. 그렇다면 자기 자신의 값과 그 전행값을 가지.. 2020. 8. 11.
[MSSQL] SQL 쿼리 튜닝 -> 인덱스(index)로 답을 찾자! 안녕하세요 투자하는 개발자 투개자입니다. 오늘은 SQL쿼리튜닝에 대해 이야기해보려합니다. 현재 1년차 개발자로 일하고 있는 저는 SQL 쿼리를 어떻게 하면 소위 더 잘 짤수 있을까를 많이 고민하고 있습니다.쿼리를 완성하고 나면 오버타임으로 좌절감에 빠지기도 하고, 어떻게 튜닝해야할지 몰라 난감하며 밤새 노력하시는 개발자님들을 위해(저와같은...ㅠㅠ) 조금이나마 도움이 되고자 글을 작성합니다. 두서없이 작성해도 이해해주시고 시작해보겠습니다. SQL튜닝하는 방법은 다양하고, 알아야할 부분도 많습니다. 그러나 오늘 글에서는 인덱스와 조인을 통해 쿼리 성능을 높이는 방법에 대해 글을 써보려 합니다. 우선 쿼리를 튜닝하기 위해선 실행계획을 알아야합니다. 각 DB마다 실행계획을 확인할 수 있는 방법은 다르지만 MS.. 2020. 7. 14.
[MSSQL] 쿼리 CPU사용량 조회 -> 튜닝 시작 전 CPU확인 방법 안녕하세요. 투자하는 개발자 투개자입니다! 오늘은 쿼리 수행 시 해당 쿼리의 CPU사용량을 알아내는 쿼리를 배워보겠습니다.옵티마이져의 실행계획이 너무 비싸거나, 작성한 쿼리가 너무 오래돈다싶은 경험이 다들 한번쯤 있으실것 같습니다.DB공부와 쿼리튜닝을 잘하시는 분들이라면 내부적인 논리연산을 정확히 알고 계셔서 어디가 문제이고, 어느부분을 고쳐야할지 알 수 있으시겠지만, 초보자 혹은 중급자 분들도 어렵게 생각하는 부분이 쿼리튜닝이라고 생각합니다. 그래서 오늘 알려드릴 쿼리는 작성한 쿼리의 CPU사용량이 얼마인지 알아내는 쿼리입니다.다들 아시겠지만, 회사를 다니다보면 어떤 업무를 수행할 때 왜 해야하는지에 대한 근거가 있어야합니다.그래서 이번 쿼리를 통해 쿼리들의 CPU를 확인하고 바꿔야겠다는 경각심을 들게.. 2020. 7. 14.
[MSSQL] WITH 사용해서 연속숫자 조회/뽑기 안녕하세요 투자하는 개발자 투개자입니다. 오늘은 WITH문을 사용해서 연속숫자를 조회? 뽑는 쿼리를 작성해보겠습니다. 개발을 할때 연속된 숫자를 뽑아 다양한 쿼리에 조인할 때도 있고, ETL 파이프라인을 개발하면서연속 숫자로 이루어진 값에 다양한 값을 조인해서 원하는 테이블을 개발할 수 있습니다. 저는 해당 쿼리를 활용해 LOG테이블 레코드에서 원하는 테이블에 해당하는 LOG기록 및 COUNT를 GROUP BY 하여 조회했습니다.출력된 ROW COUNT로 FOR문을 돌려 다양한 작업들을 개발했습니다. WITH문을 활용해 연속된 숫자를 뽑는 쿼리는 바로 해당 쿼리입니다. WITH TEST AS(SELECT 1 AS numUNION ALLSELECT num + 1FROM TESTWHERE num 2020. 7. 13.
[MSSQL] 스키마 별 전체 행수(ROW)수 구하기 - COUNT 안녕하세요 투자하는 개발자 투개자입니다.MSSQL 내 시스템 테이블을 통해 행수를 구하는 쿼리를 알아보겠습니다. 데이터 베이스를 관리하다 보면 원하는 테이블의 ROW COUNT가 필요한 상황이 많습니다.보통은 SELECT문으로 COUNT를 구하지만, 만약 50개 100개의 테이블 행수가 필요한 상황이라면 어떻게 해야할까요?SELECT COUNT(*) FROM [스키마명].[테이블명]으로 하나하나 쿼리를 작성하실 건가요?이와같은 상황에서 필요한 것이 시스템 테이블입니다. sys라는 스키마로 사용되는 해당 테이블은 SQL_SERVER에서 지원되는 시스템 테이블입니다. 이를 활용해서 원하는 스키마 내 테이블 행수(ROW COUNT)를 한번에 조회할 수 있는 쿼리를 작성 할 수 있습니다. 우선 어떻게 작성하는지.. 2020. 7. 13.
[MSSQL] DELETE문 TRUNCATE문 DROP문 비교 및 사용법 안녕하세요. 투자하는 개발자입니다오늘은 데이터를 삭제할 때 사용하는 DELETE, TRUNCATE, DROP 쿼리들을 배워보겠습니다.모든 DB들 마다 그들의 철학과 정책이 다르겠지만, 최소한 CRUD는 같은 쿼리를 사용하기 때문에기본적인 쿼리를 알고 계신다면 데이터베이스에 관계없이 활용하실 수 있습니다. 데이터를 삭제할 때 사용하는 쿼리는 DELETE문, TRUNCATE문 DROP문이 있습니다.결국 최종목표인 데이터를 삭제하는 결과는 동일해지나, 각각의 차이점이 존재합니다. 구분 테이블 저장공간 속도 복구 DELETE 존재 존재 느림 가능 TRUNCATE 삭제 삭제 빠름 불가 DROP 삭제 삭제 빠름 불가 1. DELETEDELETE FROM [스키마].[테이블명]cs 입력한 테이블의 데이터를 삭제 하실.. 2020. 7. 13.
[MSSQL] UPDATE문 및 사용법 MSSQL의 UPDATE 문입니다. IT개발에서 가장 중요한 4가지를 꼽으라면 CRUD! CREATE, READ, UPDATE ,DELETE입니다.이 4가지를 구현할 실력을 갖추었다면 기본은 되어있다고 한다. 특히 웹에서 CRUD를 완벽히 구현할 수 있다면 나머지는 추가적인것임으로 개발이 끝났다고 해도 과언이 아닙니다. 아무튼 MSSQL (SQL_SERVER) 카테고리를 만들고 처음으로 작성하는 글이여서 어떤 쿼리를 써볼까 많이 고민했습니다. CREATE, SELECT, DELETE문 도 작성할 테지만, UPDATE를 선정한 이유는 별 이유없습니다. 데이터베이스를 처음 배울때 가장 많이 구글링 했던 쿼리가 UPDATE쿼리여서 작성하게 되었습니다. 왜그런지 모르지만 UPDATE쿼리가 특히 안외워졌기 때문에.. 2020. 7. 13.
반응형