본문 바로가기
반응형

IT/Database98

데이터베이스 최적화 방법 2 (23.04.28) 지난 포스팅은 외부에서 받아온 최적화 방법들이 정리 되었었다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 이번 포스팅에서는 내가 정리한 내용을 추가로 적어두려고 한다. (중복된 내용 존재할수 있음) - JOIN NL -> 인덱스 있을떄 sort merge -> 동등 / 비동등 일떄 hahs -> 동등일때 - function 은 return 필수 / procedure는 필수 아님 - findbyid 할 경우 엔티티 전체가 나와서 만약 id 만 원할 경우나 인덱스 있을경우를 원하면 해당 컬럼만 다루면 테이블 스캔 안하고 인덱스 스캔만 - 만약 where a.id = b.id and a.id=1 인걸 inlineview로 넣으면 b에도 10을 넣어주기 - x+2>5 보단 바인딩 변수는 혼자 두기 x>3 으.. 2023. 4. 29.
데이터베이스 최적화 방법 1 (23.04.27) 옵티마이저의 종류와 DBMS 종류에 따라 다를순 있지만 일반적인 쿼리 튜닝방법에 대해서 정리한 글을 공유하려한다. 저장해두고 보기 위해 글 사용합니다. OR 연산자의 사용을 피하라. 대부분의 경우에 WHERE 절의 조건에 OR 연산자를 가지고 있다면 SQL은 인덱스를 사용하지 않는다. 이러한 명령문은 두가지 방법으로 다시 작성할 수 있는데, 어떤 환경에서는 IN 연산자를 가지고 있는 조건으로 대치하거나 UNIO으로 연결된 두개의 SELECT 문을 사용하여 전체 명령문을 대치할 수 있다. 이렇게 대치하면 SQL은 인덱스를 사용할 것이다. 주의사항 : OR 연산자가 UNION으로 대체 될 때, 자동적으로 중복된 모든 행을 삭제한다. 원래의 SELECT 문에서 기본키를 포함하고 있다면 상관없다. WHERE H.. 2023. 4. 29.
com.mysql.cj.jdbc.Driver와 com.mysql.jdbc.Driver 차이 (23.04.25) 데이터베이스와 연동하는 개발을 하기 위해서는 jdbc를 필수적으로 필요로 한다. 그중 오픈라이선스로 무료인 mysql을 개인으로는 많이 사용하고 필자 역시 사용하는데, driver가 이름은 같지만 도메인 자체가 다른 제목과 같은 두 드라이버에 대한 차이를 알아보려고 한다. - com.mysql.cj.jdbc.Driver - com.mysql.jdbc.Driver 둘의 차이는 사용하는 mysql connector의 버전이다. com.mysql.jdbc.Driver는 Connector/J 5.x 버전까지 사용되었고 Connector/J 8.x 버전부터는 com.mysql.cj.jdbc.Driver를 사용해야 한다. 실제로 mysql-connector-java-8.0.22.jar 파일을 디컴파일러로 까보면 패.. 2023. 4. 28.
[Tibero] view / procedure 조회 이전 포스팅에서 oracle에서 procedure 조회 관련해서 다룬 적이 있다. 아래 참고 포스팅을 참고 바란다. tibero에서 view랑 procedure 조회는 아래와 같이 가능하다. 프로시저 조회 방법 SELECT * FROM DBA_SOURCE WHERE owner = 'owner 명' AND type = 'PROCEDURE' AND name = 'procedure 명'; 뷰 조회 방법 SELECT * FROM USER_VIEWS WHERE VIEW_NAME = 'view 명'; 참고 포스팅 https://thenicesj.tistory.com/521 [Oracle] procedure 조회 전 포스팅에서 procedure와 function에 대해서 차이와, 선언하는법을 다뤘다. 자세한 내용은 .. 2023. 4. 22.
rownum 과 limit 의 차이 dbms에서 많이 사용되는 쿼리중에 특정 행의 갯수 반환을 위해 사용하는 구문이 있다. mssql 에서는 top-n 을 사용하지만 rownum과 limit 구문을 많이 봤을것이다. 둘의 차이를 알아보도록 할것이다. 결론만 먼저 말하면 다음과 같다. ROWNUM함수는 결과 레코드에 대한 순서의 번호를 반환한다. LIMIT 절은 출력되는 레코드의 개수를 제한 할 때 사용한다. 둘의 차이를 좀더 설명하면 limit 은 정렬 연산까지 모두 완료한 후에 최종 레코드의 갯수를 제한하는것이고 (마무리 완료 후), rownum은 모든 연산을 하기 이전에 레코드 순서를 기준으로 출력을 제한하는 것이다(그냥 위에서부터 보여주는 것). 2023. 4. 14.
PSM 이란? PSM 이란? 먼저 위키백과에서 소개하는 설명은 아래와 같다. SQL/PSM(SQL/Persistent Stored Modules)은 주로 저장 프로시저에 사용하기 위해 절차적 언어로 SQL 확장을 정의해둔 ISO 표준이다. https://ko.wikipedia.org/wiki/SQL/PSM SQL/PSM - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. SQL/PSM(SQL/Persistent Stored Modules)은 주로 저장 프로시저에 사용하기 위해 절차적 언어로 SQL 확장을 정의해둔 ISO 표준이다. 1996년에 SQL-92(ISO/IEC 9075-4:1996, 가끔은 PSM-9 ko.wikipedia.org 좀더 부가 설명을 더하면 SQL에 프로그래밍 언어 설계 기능을.. 2023. 4. 3.
[Oracle] procedure 조회 전 포스팅에서 procedure와 function에 대해서 차이와, 선언하는법을 다뤘다. 자세한 내용은 아래 참고 포스팅 참고바란다. 이번 포스팅에서는 만든 프로시져를 조회하는 방법이다. 간단하니 한번 따라해보는것을 추천한다. 프로시저 목록 조회 SELECT * FROM ALL_PROCEDURES WHERE 1=1 AND OWNER = 'owner 명' AND OBJECT_NAME = ' 명'; 프로시저 내용 조회 SELECT * FROM ALL_SOURCE WHERE 1=1 AND OWNER = 'owner명' AND NAME = '명' ; SELECT * FROM ALL_SOURCE WHERE 1=1 AND OWNER = 'owner명' AND NAME ... -- 조건을 통해 필터 AND LINE .. 2023. 4. 1.
프로시저 / 함수 선언법 이전포스팅에서 프로시저와 함수에 대해서 알아본 적이 있다. 자세한 내용은 아래 참고 포스팅에 있다. 이번 포스팅에서는 그 함수와 프로시저를 선언하는 법에 대해서 알아볼 것이다. 기본 문법은 다음과 같다. procedure CREATE OR REPLACE PROCEDURE procedurename (id IN VARCHAR2, name IN VARCHAR2) IS BEGIN select 'test' from dual; END procedurename; function CREATE OR REPLACE FUNCTION functionname (id IN VARCHAR2, name IN VARCHAR2) IS BEGIN select 'test' from dual; RETURN 'test종료'; END funct.. 2023. 3. 31.
H2 Database 란? (in Spring) H2는 자바로 작성된 관계형 데이터베이스 관리 시스템이다. 장점 따로 설치가 필요없다 용량이 매우 가볍다 웹용 콘솔(쿼리툴) 제공하여 개발용 로컬DB로 사용 용이 특징 JAVA로 작성된 오픈소스 RDBMS 스프링 부트가 지원하는 인메모리 관계형 데이터베이스 인메모리로 띄우면 애플리케이션 재기동 때마다 초기화 로컬 환경, 테스트 환경에서 많이 쓰임 H2 Database 사용법 아래는 공홈 사이트 이다. http://h2database.com H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, so.. 2023. 3. 5.
반응형