2021년 12월 10일 금요일

(자바오라클잘하세요)오라클 SQL튜닝, WHERE절에서 SQL함수 사용튜닝, 함수기반인덱스, 자바학원, 오라클학원

 

(자바오라클잘하세요)오라클 SQL튜닝, WHERE절에서 SQL함수 사용튜닝, 함수기반인덱스, 자바학원, 오라클학원


http://ojc.asia/bbs/board.php?bo_table=LecOrccleTun&wr_id=159 


오라클 SQL튜닝, WHERE절에서 SQL함수 사용튜닝, 함수기반인덱스

오라클 SQL튜닝, WHERE절에서 SQL함수 사용튜닝, 함수기반인덱스SQL TIPWHERE절에서 SQL함수의 사용실습 : 오라클19CWHERE절의 컬럼에 SQL함수를 사용하는 것은 부담스러운 일 입니다. 특히 인덱스가 걸려

ojc.asia



https://youtu.be/RsswtJnUFP0

https://www.youtube.com/watch?v=F81s1_q4Fqo&list=PLxU-iZCqT52DFRbLFQIgGUFp-5En2DYRG&index=15&t=2s 

SQL TIP



WHERE절에서 SQL함수의 사용



실습 : 오라클19C



WHERE절의 컬럼에 SQL함수를 사용하는 것은 부담스러운 일 입니다. 특히 인덱스가 걸려 있는 컬럼인데 SQL 함수가 사용되었다면 그 인덱스는 사용할  수가 없어 원본 데이터인 전체 테이블 FULL SCAN을 하므로 성능이 저하 됩니다.


WHERE절에서는 좌측 컬럼에 대해서는 함수 사용을 피하고 오른쪽 (문자)상수쪽에 SQL함수를 사용해야 인덱스를 사용하는데 문제가 없으며, 부득이 사용해야 한다면 함수기반 인덱스를 사용해야 합니다.


다음과 같은 예를 보겠습니다.



-- MYEMP1 테이블은 2000만건 정도 있는 테이블 입니다.
SELECT COUNT(*) FROM MYEMP1;
SELECT * FROM MYEMP1;

-- MYEMP1 테이블에 생성되어 있는 인덱스를 확인 합니다.
SELECT TABLE_NAME, INDEX_NAME 
FROM USER_INDEXES 
WHERE TABLE_NAME = 'MYEMP1';

-- ename 컬럼은 인덱스가 생성되어 있어서 빨리 조회됩니다.
SELECT * FROM MYEMP1
WHERE ENAME = '가길동281';

-- like인 경우도 인덱스 컬럼인 ename에 변현이 안되었으므로
-- 인덱스를 경유하여 빨리 조회 됩니다.
SELECT COUNT(*) FROM MYEMP1
WHERE ENAME LIKE '다길동%';

-- 인덱스 컬럼인 ename에 변형이 생겨 인덱스를 이용할수 없습니다.
-- 시간이 더 걸립니다.
SELECT COUNT(*) FROM MYEMP1
WHERE SUBSTR(ENAME, 0, 3) = '다길동';

-- 꼭 WHERE절의 컬럼에 대해 SQL함수를 사용해야 한다면 
-- 함수기반 인덱스를 만드세요.
DROP INDEX FIDX_MYEMP1_ENAME;
CREATE INDEX FIDX_MYEMP1_ENAME ON MYEMP1( SUBSTR(ENAME, 0, 3) );

-- 함수가반 인덱스를 생성 후 실행하니 빨리 조회 됩니다.
SELECT COUNT(*) FROM MYEMP1
WHERE SUBSTR(ENAME, 0, 3) = '다길동';




#SQL튜닝, #오라클튜닝, #함수기반인덱스, #오라클교육, #SQL교육, #오라클학원, #SQL학원, #SQL동영상, #오라클동영상,

SQL튜닝, 오라클튜닝, 함수기반인덱스,오라클교육, SQL교육, 오라클학원, SQL학원, SQL동영상, 오라클동영상


댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...