SQL
-
[Oracle] SQL 튜닝SQL 2023. 6. 12. 16:38
1. PLAN 생성 과정 ① 테이블 통계정보 갱신 각 DB설정에 따라 테이블 통계정보를 갱신하는 주기가 있다. 가장 최근에 통계정보가 갱신된 날짜는 Last analyzed 를 보면 된다. 통계정보가 자동으로 갱신이 되면 옵티마이저가 plan 을 새로 짜게 된다. sql id 당 childnum 만큼의 plan 을 뽑는다. 대용량 테이블에서 테이블 통계정보가 자주 갱신된다면 실행계획도 그때마다 바뀌게 되어 가장 최적의 plan 으로 실행되지 않을 수 있다. 그러므로 대용량 데이터일 경우 가장 최적의 plan 이 계속 유지되도록 통계정보를 갱신하지 않는 방법이 좋다. 튜너분이 추천해준 것은 다음과 같다. 1) 데이터량 1000건 미만 → 갱신 X 2) 데이터량 100만건 → 갱신 O 3) 데이터량 1억건 ..
-
[Oracle] Index (인덱스)SQL 2023. 6. 12. 16:05
1. 인덱스 ① 인덱스 생성 기본 equal은 먼저 배치. range는 대체로 맨 뒤에 배치하는게 좋음. COLUMN 조건형식 예 A = idx B 범위(range) date C = name index1 : B, A → X index2 : A, B → O ② 인덱스에 사용할 컬럼 선택 기준 - distinct 값의 종류가 많은 컬럼이 앞에 나와야 함. 예를들어 distinct 가 2개인 컬럼의 경우 인덱스의 의미가 없어짐. - 사용빈도 별도의 인덱스를 생성하는 게 좋음 ③ 주의 인덱스 생성 시 paraller (= 쓰레드 비슷) 를 설정하면 더 빠르게 생성됨. 추후에 꼭 다시 0으로 바꿔줘야 함. paraller 은 개발자는 되도록 쓰지 말고 전문가의 관리하에 사용해야 함. * 출처 : SQL 전문 튜너..
-
[MyBatis][링크스크랩] #와 $의 차이점SQL 2021. 9. 14. 08:39
값 매핑 방법 값을 넣느냐 컬럼을 넣느냐 싱글 쿼테이션을 넣고싶거나 안 들어가게 하고 싶거나 https://marobiana.tistory.com/60 [iBatis/myBatis] #와 $의 차이점 1. #는 쿼리가 수행될 때, 다음과 같이 된다 SELECT * FROM USER WHERE col = ? parameter : [값] ?에 bind된 값이 들어가게 된다. 이 쿼리의 컴파일 된 내용을 재사용 할 수 있고, 파라미터에 따라 대입해주므.. marobiana.tistory.com
-
[MSSQL] 입력값 순서대로 조회하기SQL 2021. 8. 24. 10:36
입력값을 받아서 데이터를 반환하는 API를 맡게되었다. 입력 순서대로 데이터를 정렬해서 반환해야 한다. 쿼리를 그냥 돌리게 되면 기존 index 순서라던지 내부 순서에 따라서 결과가 나온다. 외부 api 에서 들어온 입력값 순서대로 데이터를 정렬하고 싶을때 CASE 문을 쓸 수 있다. SELECT code WHERE code IN #{item} ORDER BY CASE code WHEN #{item} THEN #{index} END 출처 : https://motolies.com/503 MSSQL Order by 임의정렬 정렬순서 조정하기 출처 : https://social.msdn.microsoft.com/Forums/sqlserver/en-US/4e32dccc-bc2c-4123-84a1-c8f2015e..
-
[MSSQL] 현재 날짜, 시간 구하기SQL 2021. 8. 12. 16:17
https://mirwebma.tistory.com/177 [MS-SQL] 현재 날짜, 시간 구하기 (GETDATE()) Mir's 운영환경 본체 DeskTop O S Windows7 Ultimate K (Service Pack 1) APP Microsoft SQL Server Management Studio 2012 MS-SQL Micorsoft SQL Server 2008 R2 (10.50.1765.0) MS-SQL 현재 날짜, 시간 구하기.. mirwebma.tistory.com
-
[MSSQL] 여러 행의 컬럼을 합치는 방법 (STUFF, FOR XML PATH)SQL 2021. 8. 12. 16:16
https://gent.tistory.com/344 [MSSQL] 여러 행의 컬럼을 합치는 방법 (STUFF, FOR XML PATH) SQL Server에서 여러 행(Row)의 컬럼 값을 하나로 합치기 위해서는 STUFF 함수와 FOR XML PATH 구문을 사용하면 된다. 오라클 SQL에서 XMLAGG, WM_CONCAT, LISTAGG 함수와 비슷한 기능을 수행한다. SQL Server 20.. gent.tistory.com https://hspmuse.tistory.com/entry/group-by%EC%97%90%EC%84%9C-%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%95%A9%EC%B9%98%EA%B8%B0 group by에서 문자열 합치기... 아래내용은 구루비 커뮤니티(오..