전체글
17
OR 조건 vs AND 조건: 성능과 변환 기법의 실체 SQL 성능 최적화에서 WHERE 조건절은 쿼리 효율에 막대한 영향을 미친다. 특히 OR 조건과 AND, NOT 조건의 조합은 작은 차이처럼 보여도 결과적으로는 수배의 성능 차이를 야기할 수 있다. OR 조건은 왜 느린가? OR 조건은 RDBMS가 각 조건을 개별적으로 평가하고, 그 결과를 합집합(UNION) 방식으로 결합하기 때문에 비용이 커지는 경향이 있다. 예를 들어, 위 쿼리는 내부적으로 두 조건 각각에 대해 인덱스를 타거나, 전체 스캔 후 필터링을 수행하게 된다. 특히 column에 인덱스가 있더라도, 두 조건을 인덱스로 효율적으로 병합하지 못하는 경우가 생긴다. 병렬 처리의 단점 OR 조건이 여러 개 걸릴 경우, 쿼리 플래너는 종종 전체 테이블 스캔(full scan) 을 선택한다. 이는 AND 조건과 비교해 더 많은 블록 I/O를 야기할 수 있다. De Morgan 법칙을 활용한 OR → AND/NOT 변환 모든 OR 조건은 수학적 논리의 드모르간 법칙(De Morgan's Law) 을 이용해 AND와 NOT으로 변환이 가능하다. 예시 변환 또는 분포 기반 최적화로, 으로 바꾸는 방법도 있다. 이 방식은 조건이 부정(NOT)으로 바뀌는 만큼, 인덱스를 활용하는 데 제약이 생길 수 있으므로 상황에 따라 신중하게 적용해야 한다. 어떤 경우 OR가 더 빠를 수도 있다 조건을 NOT으로 바꾸었지만, 결과적으로 더 많은 데이터를 대상으로 필터링해야 하는 경우 성능은 오히려 저하된다. 예를 들어 다음의 경우를 보자. 위와 같이 부정 조건으로 바꾼 필터가 훨씬 더 많은 데이터를 통과시키게 되는 경우, OR 조건이 오히려 빠르게 작동한다. 이때는 실제 데이터 분포 통계(histogram) 와 실행 계획(EXPLAIN PLAN) 을 반드시 확인해야 한다. 인덱스와 결합 전략 대부분의 RDBMS는 단일 인덱스로는 OR 조건의 모든 조합을 최적화하지 못한다. 반면, UNION ALL로 분해...
Enterprise Manager에서 "관리"항목의 "SQL Server에이젼트". 거기서 "작업" 화면을 띄운다. 오른쪽 화면에서 우측클릭해서 "새 작업"을 클릭한다. image.png 이름을 지정하고, 범주와 소유자를 선택한 후, 단계 탭을 클릭한다. image.png 단계에서 추가화면에서 단계이름을 입력하고, 데이터베이스와 수행할 쿼리를 입력한다. image.png 고급탭에서는 성공/실패에 따른 흐름을 선택할 수 있다. 여러개의 쿼리를 수행할 때 유용하다. image.png 일정탭에서는 언제 실시할 지를 선택할 수 있다. image.png 작업이 완료된 후, 알림방법을 선택한 후, 적용버튼을 클릭한다. image.png
🧩 데이터 타입이란? 오라클에서 데이터 타입(Data Type)은 각 컬럼에 저장할 수 있는 값의 종류와 형식을 정의한다. 정확한 타입 선택은 저장 공간, 성능, 정렬/검색 로직에 큰 영향을 준다. 1️⃣ 문자형 (Character) 🔹 실전 팁 고정 길이가 반드시 필요한 경우가 아니라면 대부분 VARCHAR2를 사용 CHAR은 공백 패딩되므로 주의 유니코드 다국어 처리에는 NCHAR, NVARCHAR2 사용 2️⃣ 숫자형 (Numeric) 🔹 실전 팁 금액, 환율: NUMBER(13,2) 등으로 소수점 이하 정밀도 확보 정수 타입은 내부적으로도 NUMBER로 처리됨 3️⃣ 날짜/시간형 (Date & Time) 🔹 실전 팁 단순 날짜: DATE 로그 기록, 고해상도 시간: TIMESTAMP 글로벌 서비스: WITH TIME ZONE 또는 WITH LOCAL TIME ZONE 4️⃣ 이진 데이터형 (Binary / Large Object) 🔹 실전 팁 작은 해시값, 바이너리 키: RAW(16) 이미지/문서 저장: BLOB 파일은 가능한 한 외부 저장소에 두고 FILE URI만 관리하는 것도 고려 5️⃣ 논리형 / Boolean Oracle에는 BOOLEAN 타입이 테이블 컬럼으로는 직접 사용 불가하다. 단, PL/SQL 내에서는 변수 타입으로 사용 가능하다. Boolean 값을 저장하려면 일반적으로 CHAR(1) 또는 NUMBER(1)을 사용해서 'Y' / 'N', 1 / 0 등으로 표현한다. 6️⃣ ROWID와 UROWID ROWID는 특정 행을 매우 빠르게 조회할 수 있도록 해주므로 성능 튜닝에서도 자주 활용된다. 🧠 데이터 타입 선택 팁 🛠 데이터 타입 확인 SQL 테이블 구조를 확인하려면: 또는: 📌 마무리 요약 문자 데이터 → VARCHAR2, 유니코드는 NVARCHAR2 숫자 데이터 → NUMBER(p, s) 날짜/시간 → DATE or TIMESTAMP 바이너리 → RAW, BLOB Boolean 컬...
오라클 sys, system 비밀번호 분실 시 서버에 직접 접속한 후 터미널에서 아래와 같이 진행합니다. 암호를 원하는 대로 설정합니다. 접속
command 창에서 다음 명령을 직접 key-in하던가, 배치파일을 만들어두고 스키마 등의 정보만 변경해서 사용하면 됩니다. How to Import Full DB ex) imp ciscm/infinitt@spectra fromuser=cdis touser=ciscm file=medis-CM-cdoc.dmp How to Export Full DB ex) exp cdis/sdm1003@medis file=D:\dump_nckuh_20090619.dmp; How to Export Table ex) exp cis/infinitt@medis file=./dump.dmp tables=tbllink_worklist;