컴퓨터 과학/데이터베이스 (27) 썸네일형 리스트형 쿼리 튜닝 1. 맨처음 리스트를 조회하는 화면에서 외부 REQ_MST, REQ_BLK 테이블을 조인하는 과정을 반복적인 쿼리로 3번 ACCESS하는 경우를 발견했다. -> WITH 문으로 임시테이블 생성 2. LEFT JOIN후 IS NOT NULL 조건을 사용하여 INTERSECTION하는 경우가 있었는데 이경우 처음 부터 INNER JOIN을 하여 쿼리 개선 하였음 반복적인 쿼리와 실행계획만 잘봐도 웬만한 속도는 나오는것 같다. oracle sql :, =: Oracle SQL에서 :는 바인드 변수를 나타냅니다. 바인드 변수는 SQL 문에서 값이나 조건을 동적으로 설정할 수 있는 매개변수입니다. 바인드 변수는 쿼리를 실행할 때마다 다른 값을 할당할 수 있으며, 이를 통해 동일한 쿼리를 여러 번 실행하면서 조건을 변경할 수 있습니다. 해당 쿼리에서 사용된 바인드 변수는 다음과 같습니다. :com: comp 칼럼에 대한 바인드 변수입니다. 이 변수에는 = 연산자를 통해 값을 바인드할 수 있습니다. :reg: location 칼럼에 대한 바인드 변수입니다. 이 변수는 like 연산자와 함께 사용되어 해당 변수로 시작하는 location 값을 검색합니다. :prod: name 칼럼에 대한 바인드 변수입니다. 이 변수는 like 연산자와 함께 사용되어 해당 변수로 시.. 데이터베이스 구조 재조정 데이터 베이스 구조를 조정하는 과정에서 먼저 느낀것은 1. KEY를 잡는것 2. KEY와 1대1로 맵핑되는것들 정리 3. KEY와 1:M으로 맵핑되는 것들정리 4. KEY와 N:M으로 맵핑되는 것들 정리 하나의 테이블에 최대한 열을 많이 집어넣게 설계를 해두고 열이 너무 많다싶으면 그때 테이블을 분리해두자 그래야지 이후 테이블에 중복되는것도 줄어들고 독립적인 구조를 그릴수 있는것 같다. 최대한 한쪽의 테이블에 몰아두고나서 기능의 사용빈도나 기능의 복잡도를 고려해서 테이블을 나누는편이 아직까지는 편한것같다. (신입이라 그런거일수도) CTAS (효율적인 UPDATE, DELETE) 대량 데이터를 Update 또는 Delete 작업하는 경우 많은 시간이 소요됩니다. Update/Delete 할때마다 기존(변경전/삭제전) 데이터를 Undo Segment 와 Redo Log 에 Writing 해야 하기 때문입니다. 그래서 Update/Delete 해야할 데이터량이 많은 경우에는 CTAS(Create Table As Select) 구문으로 변경해서 작업하는 것이 훨씬 빠르고 유리합니다. CTAS는 "Create Table As Select"의 약어로, 기존 테이블의 데이터를 기반으로 새로운 테이블을 생성하는 SQL 문입니다. CTAS 문은 SELECT 문과 CREATE TABLE 문을 결합한 형태로서 사용됩니다. CTAS 문은 다음과 같은 구조를 가집니다: ``` CREATE TABLE .. IN과 EXISTS차이 ORACLE에서 작업하고 잇는데 A 테이블의 ROW수가 1300000 B 테이블의 ROW수가 약 200000이야 해당 쿼리가 시간이 너무 오래걸리는데 최적화 시킬수 있을까? DELETE FROM A WHERE ID IN (SELECT ID FROM B WHERE CREAT_DT < TO_DATE('2023-07-01','YYYY-MM-DD')); 1. 인덱스 추가: T_ELN_SHEET 테이블의 CREAT_DT 열과 T_ELN_SHEET_MTRAL 테이블의 SHEET_ID 열에 인덱스를 추가할 수 있습니다. 인덱스를 사용하면 쿼리의 실행 속도를 향상시킬 수 있습니다. 2. EXISTS 절 사용: 대신 IN 절을 사용하는 대신 EXISTS 절을 사용할 수 있습니다. EXISTS 절은 서브쿼리가 참일 경우에.. Toad - compare 회사에서 DB를 정리하려고 하는데 누군가 dump를 띄워둔 테이블이 꽤 존재했다 예를들어 T_ABC_DEFG라는 테이블이 원래 존재하는데 본뜬 당일을 추가하여 T_ABC_DEFG230120 T_ABC_DEFG230924 이런식으로 같은 테이블이 존재한다는 것이다 이 테이블들을 비교하기위해 Toad에 Database -> Compare에 들어가서 테이블들을 비교한다. 데이터베이스 접속오류(ORA-12170) 회사 아침에 갑작스럽게 toad : ORA-12170 sqldeveloper : 17002 라는 에러들이 등장했다. 찾아본결과 TNS가 문제라고 해서 하나씩 해결해보려한다. C:\WINDOWS.X64_193000_db_home\network\admin 1. TNSNAMES 2. LISTNER 3. SQLNET 3가지 파일을 뒤져봤지만 큰 문제는 없을것 같음 time_out이 문제였기에 sqlnet에가서 time_out 시간을 늘려주었지만 소용없었음 2시간 이후 회사 보안팀에 문의 -> 방화벽 문제였던것으로 판결 DB PILOT 프로그램이 오늘 아침에 적용되었던것이어따...... not in 과 not exists의 차이 Write a query to print all prime numbers less than or equal to . Print your result on a single line, and use the ampersand () character as your separator (instead of a space). For example, the output for all prime numbers would be: Oracle 데이터베이스에서 "IN"과 "EXISTS"는 서로 다른 용도로 사용되는 두 가지 SQL 구문입니다. 각각 다음과 같은 방식으로 동작합니다. IN 연산자: "IN" 연산자는 주어진 값 목록 내에서 일치하는 값을 찾는데 사용됩니다. 일반적으로 "IN" 연산자는 하위 쿼리가 아닌 정적인 값.. 이전 1 2 3 4 다음