Posted
Filed under DataBase/MSSQL

MSSQL Management Studio 에서 해당 테이블에서 마우스 오른쪽을 눌러 트리거를 켜고 끌 수 도 있으나, 
SQL 쿼리문으로 Disable / Enable 시키는 방법 입니다.

1. 트리거 Disable
ALTER TABLE "테이블명"
DISABLE TRIGGER "트리거명"
※트리거가 걸린 테이블을 선택 해야 합니다.

2. 트리거 Enable
ALTER TABLE "테이블명"
ENABLE TRIGGER "트리거명"
※트리거가 걸린 테이블을 선택 해야 합니다.

2026/02/01 16:50 2026/02/01 16:50
Posted
Filed under DataBase/Oracle

Oracle에서 ORDER BY 없이 인덱스만으로 자동 정렬이 될까?

 

 

결론부터 말하겠습니다.
“안 됩니다. 반드시 ORDER BY를 써야 합니다.”
인덱스가 정렬된 구조라 하더라도, Oracle은 쿼리 결과의 순서를 자동으로 보장하지 않습니다.

1. 왜 안 되는가?

- SQL에서 ORDER BY가 없으면 결과 순서는 미정(indeterminate) 입니다.
- 인덱스는 내부적으로 정렬된 구조(B-tree)를 유지하지만, 데이터를 읽어오는 순서는 옵티마이저가 결정합니다.
- 옵티마이저는 인덱스를 항상 순차적으로 읽는 보장이 없고, 다른 실행 계획(Full Table Scan 등)으로 바꿀 수 있습니다.

2. “근데 인덱스를 타면 정렬돼서 나오던데요?”

맞습니다. 다음과 같은 조건에서는 우연히 정렬처럼 보일 수 있습니다.
- Index Range Scan이나 Index Full Scan을 사용
- 쿼리에서 필요한 컬럼이 모두 인덱스에 포함됨 (Covering Index)
- 실행 계획이 변하지 않고, 통계 정보나 데이터 양이 비슷한 경우
 
하지만 이건 어디까지나 지금 환경에서만 우연히 정렬된 것입니다.
옵티마이저 통계가 갱신되거나 실행 계획이 바뀌면 바로 깨집니다.

2025/08/09 13:40 2025/08/09 13:40
블루네쩜넷's site.
블루네쩜넷
Powered by Textcube 1.10.7 : Tempo primo, Persona skin designed by inureyes edited by LonnieNa