레이블이 오라클튜닝인 게시물을 표시합니다. 모든 게시물 표시
레이블이 오라클튜닝인 게시물을 표시합니다. 모든 게시물 표시

2021년 12월 10일 금요일

오라클 SQL교육, Distinct를 Exists로, Distinct란?, SQL TIP, 오라클학원/자바학원/SQL학원교육/오라클교육

 

오라클 SQL교육, Distinct를 Exists로, Distinct란?, SQL TIP, 오라클학원/자바학원/SQL학원교육/오라클교육


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


오라클 SQL교육, Distinct를 Exists로, Distinct란?, SQL TIP

오라클 SQL교육, Distinct를 Exists로, Distinct란?, SQL TIPSQL TIPdistinct?distinct를 exists로실습 : 오라클19CDISTINCT는 SELECT List에서 레코드의 중복을 제거하기 위해서 사용합니다. DISTINCT 키워드 뒤에는 둘 이상

ojc.asia



https://youtu.be/BVeBkyIWUrU


SQL TIP





https://www.youtube.com/watch?v=RsswtJnUFP0&list=PLxU-iZCqT52DFRbLFQIgGUFp-5En2DYRG&index=27 

distinct?

distinct를 exists로


실습 : 오라클19C



DISTINCT는 SELECT List에서 레코드의 중복을 제거하기 위해서 사용합니다. DISTINCT 키워드 뒤에는 둘 이상의 컬럼을 지정할 수 있는데 선택한 모든 열을 기준으로 중복을 제거하여 고유한 값 조합을 표시 합니다.




SELECT DISTINCT expressions  
FROM 테이블 
WHERE 조건절;  


COUNT(DISTINCT 컬럼) 형식에서는 하나의 컬럼만 사용가능 합니다.


– 여러 컬럼을 사용하려면  CONCAT을 이용하여 우회 합니다.
SELECT  COUNT(   DISTINCT  CONCAT  (  EMPNO,   ENAME  ) ) A
FROM  EMP;


이러한 distinct는 중복을 제거하기 위해 내부적으로 정렬(SORT)를 동반하므로 대용량의 테이블에서는 사용에 조심해야 합니다.


실습


-- 실습을 위한 테이블의 데이터를 확인 합니다.
-- 사원
SELECT * FROM MYEMP1;

-- 수강
SELECT * FROM MYSUGANG1;

-- 한 사원이 여러강좌를 수강할 수 있으므로 count(empno) 건수가 훨씬 많습니다.
SELECT COUNT(EMPNO) FROM MYSUGANG1;
SELECT COUNT(DISTINCT EMPNO) FROM MYSUGANG1;

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

SELECT * FROM USER_IND_COLUMNS
WHERE INDEX_NAME = 'PK_SUGANG';

-- 한과목 이상 수강한 사원이름 추출, 
-- 수강 테이블에 사원은 여러 과목을 들을 수 있어서 여러건 있음
SELECT DISTINCT E.ENAME
FROM   MYEMP1 E  INNER JOIN MYSUGANG1 S
ON  E.EMPNO = S.EMPNO;

-- EXISTS를 사용하여 변환 합니다.
SELECT E.ENAME
FROM    MYEMP1 E
WHERE  EXISTS ( SELECT 1 FROM MYSUGANG1 S
                WHERE E.EMPNO = S.EMPNO);              





#SQL튜닝, #오라클튜닝, #distinct, #오라클교육, #SQL교육, #오라클학원, #SQL학원, #SQL동영상, #오라클동영상,

SQL튜닝, 오라클튜닝, distinct, 오라클교육, SQL교육, 오라클학원, SQL학원, SQL동영상, 오라클동영상

(자바오라클잘하세요)오라클 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...