[테스트 환경]
서버: CentOs7
DB : MariaDB 10.1.12
DB엔진 : INNODB
- Type컬럼은 각 테이블의 레코드를 인덱스로 읽었는지 풀 테이블 스캔으로 읽었는지를 의미
--테스트에서 사용하게 될 테이블 스크립트 정보 MariaDB [DA]> DESC EMP; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | EMPNO | int(4) | NO | PRI | NULL | | | ENAME | varchar(10) | YES | MUL | NULL | | | JOB | varchar(9) | YES | | NULL | | | MGR | int(4) | YES | | NULL | | | HIREDATE | date | YES | | NULL | | | SAL | int(7) | YES | | NULL | | | COMM | int(7) | YES | | NULL | | | DEPTNO | int(2) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 8 rows in set (0.00 sec) MariaDB [DA]> DESC DEPT; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | DEPTNO | int(2) | NO | PRI | NULL | | | DNAME | varchar(14) | YES | | NULL | | | LOC | varchar(13) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) MariaDB [DA]> DESC DA_EMP_DEPT; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | EMPNO | int(11) | NO | PRI | NULL | | | DEPTNO | char(4) | NO | PRI | NULL | | | START_DATE | date | NO | | NULL | | | END_DATE | date | NO | | NULL | | +------------+---------+------+-----+---------+-------+ 4 rows in set (0.00 sec) 1.SYSTEM - 레코드가 1건만 존재하는 테이블 또는 한 건도 존재하지 않는 테이블을 참조하는 형태의 접근 방식 (InnoDB 발생 X) --데이터 베이스 생성 및 케릭터 셋 설정 MariaDB [(none)]> CREATE DATABASE DA default character set utf8mb4; Query OK, 1 row affected (0.01 sec) --MYISAM 테이블 생성 MariaDB [DA]> CREATE TABLE TEST( ID INT(11) NOT NULL, NAME VARCHAR(20)) ENGINE =MYISAM; Query OK, 0 rows affected (0.00 sec) --MYISAM 테이블에서 데이터가 미존재 할 경우 TYPE컬럼 값 : system MariaDB [DA]> EXPLAIN SELECT * FROM TEST; +------+-------------+-------+--------+---------------+------+---------+------+------+---------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+--------+---------------+------+---------+------+------+---------------------+ | 1 | SIMPLE | TEST | system | NULL | NULL | NULL | NULL | 0 | const row not found | +------+-------------+-------+--------+---------------+------+---------+------+------+---------------------+ 1 row in set (0.01 sec) --데이터 삽입 1건 삽입 MariaDB [DA]> INSERT INTO TEST(ID,NAME) VALUES(1,'JSH'); Query OK, 1 row affected (0.00 sec) --MYISAM 테이블에서 데이터가 1 건 존재 할 경우 TYPE컬럼 값 : system MariaDB [DA]> EXPLAIN SELECT * FROM TEST; +------+-------------+-------+--------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+--------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | TEST | system | NULL | NULL | NULL | NULL | 1 | | +------+-------------+-------+--------+---------------+------+---------+------+------+-------+ 1 row in set (0.00 sec) --데이터 삽입 2건 삽입 MariaDB [DA]> INSERT INTO TEST(ID,NAME) VALUES(2,'YHM'); Query OK, 1 row affected (0.00 sec) --MYISAM 테이블에서 데이터가 2 건 존재 할 경우 TYPE컬럼 값 : ALL MariaDB [DA]> EXPLAIN SELECT * FROM TEST; +------+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | TEST | ALL | NULL | NULL | NULL | NULL | 2 | | +------+-------------+-------+------+---------------+------+---------+------+------+-------+ 1 row in set (0.00 sec) --I엔진 변경 - > INNODB MariaDB [DA]> ALTER TABLE TEST ENGINE=INNODB; Query OK, 2 rows affected (0.03 sec) --기존의 입력 데이터 모두 삭제 MariaDB [DA]> DELETE FROM TEST; Query OK, 2 rows affected (0.02 sec) --INNODB엔진에서는 데이터가 미존재하여도 TYPE컬럼 값 : ALL MariaDB [DA]> EXPLAIN SELECT * FROM TEST; +------+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | TEST | ALL | NULL | NULL | NULL | NULL | 1 | | +------+-------------+-------+------+---------------+------+---------+------+------+-------+ 1 row in set (0.01 sec) 2 CONST(UNIQUE INDEX SCAN) - 쿼리가 프라이머리 키나 유니크 키 컬럼을 이용하는 WHERE조건을 가지고 있으며, 반드시 1건을 반환하는 쿼리의 처리 방식 - 인덱스 컬럼이 두개 일 때 일부의 컬럼만을 조회 조건으로 사용 한다만 CONST아닌 REF로 표기 - CONST 실행 계획은 옵티마이저가 퀴리를 최적화하는 단계에서 통째로 상수화 한다. 상수(CONST)라고 표시되는 것 --단일키 인덱스 -- id2번의 서브쿼리에서 인덱스 컬럼인 EMPNO로 조회하였기 때문에 const이며, -- id1번의 ENMAE컬럼의 인덱스는 NON-UNIQUE인덱스 이기 때문에 ref로 읽는다. MariaDB [DA]> EXPLAIN -> SELECT COUNT(*) -> FROM EMP E -> WHERE ENAME=(SELECT ENAME FROM EMP E1 WHERE EMPNO=7369); +------+-------------+-------+-------+-----------------+-----------------+---------+-------+------+--------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+-------+-----------------+-----------------+---------+-------+------+--------------------------+ | 1 | PRIMARY | E | ref | EMP_ENAME_IDX01 | EMP_ENAME_IDX01 | 33 | const | 1 | Using where; Using index | | 2 | SUBQUERY | E1 | const | PRIMARY | PRIMARY | 4 | const | 1 | | +------+-------------+-------+-------+-----------------+-----------------+---------+-------+------+--------------------------+ 2 rows in set (0.00 sec) -복합키 인덱스 --유니크 인덱스의 컬럼을 모두 조회 조건에서 사용하였기 때문에 const로 읽는다. MariaDB [DA]> EXPLAIN SELECT * FROM DA_EMP_DEPT WHERE EMPNO='1000' AND DEPTNO='A111'; +------+-------------+-------------+-------+---------------+---------+---------+-------------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------------+-------+---------------+---------+---------+-------------+------+-------+ | 1 | SIMPLE | DA_EMP_DEPT | const | PRIMARY | PRIMARY | 16 | const,const | 1 | | +------+-------------+-------------+-------+---------------+---------+---------+-------------+------+-------+ 1 row in set (0.00 sec) 3 EQ_REF - 여러 테이블이 조인되는 쿼리의 실행 계획에서만 표시되며, 조인에서 처음 읽는 테이블의 컬럼 값이 , 그 다음 읽어야 할 테이블의 프라이머리 키나 유니크 키 컬럼의 검색 조건 일 때. --DA_EMP_DEPT테이블의 DEPTNO컬럼으로 조회 후 EMP테이블의 EMPNO컬럼과 조인 하였기 때문에 eq_ref로 읽는다. --만약 E.EMPNO = D.EMPNO가 아닌 E.DEPTNO = D.EMPNO로 조인 하였다면, REF로 읽게 될 것이다. MariaDB [DA]EXPLAIN SELECT E.* FROM DA_EMP_DEPT D INNER JOIN EMP E ON (E.EMPNO = D.EMPNO) WHERE D.DEPTNO =20; +------+-------------+-------+--------+---------------+---------+---------+------------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+--------+---------------+---------+---------+------------+------+-------------+ | 1 | SIMPLE | D | ALL | PRIMARY | NULL | NULL | NULL | 11 | Using where | | 1 | SIMPLE | E | eq_ref | PRIMARY | PRIMARY | 4 | DA.D.EMPNO | 1 | | +------+-------------+-------+--------+---------------+---------+---------+------------+------+-------------+ 2 rows in set (0.00 sec) 4 REF - 인덱스 종류와 관계 없이 동등 조건으로 검색 할 때 사용. 레코드가 반드시 1건이라는 보장이 없음 --DA_EMP_DEPT 테이블의 인덱스 컬럼은 EMPNO,DEPTNO 복합 키 이며, EMPNO 컬럼만 조회 조건에 사용하였기 때문에 유일함을 보장 할수 없다. --따라서 REF로 읽는다. MariaDB [DA]> EXPLAIN SELECT * FROM DA_EMP_DEPT WHERE EMPNO='1000'; +------+-------------+-------------+------+---------------+---------+---------+-------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------------+------+---------------+---------+---------+-------+------+-------+ | 1 | SIMPLE | DA_EMP_DEPT | ref | PRIMARY | PRIMARY | 4 | const | 1 | | +------+-------------+-------------+------+---------------+---------+---------+-------+------+-------+ 1 row in set (0.00 sec) --ENAME 컬럼의 인덱스는 NON-UNIQUE인덱스 이기 때문에 REF로 읽는다. MariaDB [DA]> EXPLAIN SELECT * FROM EMP E WHERE E.ENAME ='SMITH'; +------+-------------+-------+------+-----------------+-----------------+---------+-------+------+-----------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+------+-----------------+-----------------+---------+-------+------+-----------------------+ | 1 | SIMPLE | E | ref | EMP_ENAME_IDX01 | EMP_ENAME_IDX01 | 33 | const | 1 | Using index condition | +------+-------------+-------+------+-----------------+-----------------+---------+-------+------+-----------------------+ 1 row in set (0.00 sec) 5. FULLTEXT - 전문 검색 인덱스를 사용해 레코드를 읽는 접근 방식을 의미 - 전문 검색 인덱스는 통계 정보가 관리되지 않으며, 전혀 다른 SQL문법을 사용해야 한다.(MATCH…AGAINST) - 전문 검색을 사용 할 때는 반드시 해당 테이블에 전문 검색용 인덱스가 준비돼 있어야만 한다. 그렇지 않으면 오류가 발생 한다. - MariaDB는 전문 검색 방식을 선호 하는 성향이 있으나 각 조건 별로 성능을 확인해 보고 사용 해야 한다. --FULLTEXT 검색 전용 인덱스 생성 MariaDB [DA]> ALTER TABLE EMP ADD FULLTEXT(ENAME); Query OK, 0 rows affected (0.08 sec) Records: 0 Duplicates: 0 Warnings: 0 --FULLTEXT를 이요한 검색 MariaDB [DA]> EXPLAIN -> SELECT * FROM EMP A -> WHERE MATCH(A.ENAME) AGAINST('SCOTT in ') LIMIT 10; +------+-------------+-------+----------+---------------+-------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+----------+---------------+-------+---------+------+------+-------------+ | 1 | SIMPLE | A | fulltext | ENAME | ENAME | 0 | | 1 | Using where | +------+-------------+-------+----------+---------------+-------+---------+------+------+-------------+ 1 row in set (0.01 sec) --CONST(unique index) 조회 조건이 존재 할 경우 , CONST가 더 우선순위가 높다. MariaDB [DA]> EXPLAIN -> SELECT * FROM EMP A -> WHERE MATCH(A.ENAME) AGAINST('SC') -> AND EMPNO =7788 -> LIMIT 10; +------+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+ | 1 | SIMPLE | A | const | PRIMARY,ENAME | PRIMARY | 4 | const | 1 | Using where | +------+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+ 1 row in set (0.00 sec) --FULLTEXT 검색 엔진 파라미터 조회 --검색어가4글자 이하일 경우 아무런 검색결과도 나오지 않는다. MariaDB [(none)]> show variables like '%t_min_word_len%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | ft_min_word_len | 4 | +-----------------+-------+ 1 row in set (0.01 sec) --My.cnf 파일을 통해서만 변경 가능 MariaDB [(none)]> SET ft_min_word_len = 2; ERROR 1238 (HY000): Variable 'ft_min_word_len' is a read only variable --기존의 생성 된 인덱스라면 파라미터 값을 바꾸고 재생성 또는 갱신을 해줘야 한다. 단점 : 단어의 일부만 검색은 불가능(LIKE 검색) , 완전한 단어검색만 가능( 현재 10.1.12 MariaDB) 6 UNIQUE_SUBQUERY, INDEX_SUBQUERY -과거 버전 - UNIQUE SUBQUERY : WHERE 조건절에서 사용 될 수 있는 IN(서브쿼리)의 접근 방식.서브 쿼리의 결과 값이 유니크한 값을 반환할 때 사용. - INDEX SUBQUERY : WHERE 조건절에서 사용 될 수 있는 IN(서브쿼리)의 접근 방식.서브 쿼리의 결과 값이 중복 된 값이 있을 수 있지만 인덱스를 이용해 중복 값을 제거 . -현재 버전 - MariaDB 10.0 UNIQUE_SUBQUERY 와 INDEX_SUBQUERY를 옵티마이저가 조인 형태로 쿼리를 실행하도록 개선함. --IN조건의 실행 계획이 메인쿼리와 같은 ID1인 것으로 보아 , 조인 조건으로 실행 된 것을 확인 MariaDB [DA]> EXPLAIN -> SELECT * FROM DEPT D WHERE D.DEPTNO IN ( SELECT DEPTNO FROM EMP E WHERE E.EMPNO =7499); +------+-------------+-------+-------+---------------+---------+---------+-------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+-------+---------------+---------+---------+-------+------+-------+ | 1 | PRIMARY | E | const | PRIMARY | PRIMARY | 4 | const | 1 | | | 1 | PRIMARY | D | const | PRIMARY | PRIMARY | 4 | const | 1 | | +------+-------------+-------+-------+---------------+---------+---------+-------+------+-------+ 2 rows in set (0.00 sec) 7 RANGE - 동등 조건을 검색 할 때가 아닌 범위로 검색 할 때 사용.(BETWEEN, IN,LIKE 등)을 연산자를 이용해 인덱스를 검색 할 때 사용. - INDEX RANGE SCAN이라고 하면 CONST,REF,RANGE 세 가지 접근 방법을 모두 묶어서 지칭함을 유의(특이한 점) MariaDB [DA]> EXPLAIN -> SELECT * FROM EMP E WHERE E.EMPNO BETWEEN 1000 AND 10000; +------+-------------+-------+-------+---------------+---------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+-------+---------------+---------+---------+------+------+-------------+ | 1 | SIMPLE | E | range | PRIMARY | PRIMARY | 4 | NULL | 14 | Using where | +------+-------------+-------+-------+---------------+---------+---------+------+------+-------------+ 1 row in set (0.00 sec) 8 INDEX_MERGE - 2개의 인덱스를 이용해 검색 결과를 만들어낸 후 그 결과를 병합처리 - 특징 1.여러 인덱스를 읽어야함( 효율성 떨어짐) 2.AND OR 연산이 복잡한 경우(최적화 불가능) 3.전문 검색 인덱스를 사용하는 쿼리에서 사용 불가능 4.처리 결과 2개 이상이기 때문에 부가 작업 필요 9 INDEX(INDEX FULL SCAN) - INDEX 접근 방식은 INDEX를 처음부터 끝까지 읽는 INDEX FULL SCAN을 의미. - 일반적으로 FULL TABLE SCAN보다는 크기가 작고 정렬 되어 있기 때문에 더 효율적이다. - INDEX 컬럼으로 정렬 작업을 할 때, INDEX에 포함 된 컬럼만으로 처리 할 수 있는 쿼리(TABLE RANDOM ACCESS 발생 X) MariaDB [DA]> EXPLAIN -> SELECT * FROM DEPT ORDER BY DEPTNO DESC LIMIT 10; +------+-------------+-------+-------+---------------+---------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-------+-------+---------------+---------+---------+------+------+-------+ | 1 | SIMPLE | DEPT | index | NULL | PRIMARY | 4 | NULL | 4 | | +------+-------------+-------+-------+---------------+---------+---------+------+------+-------+ 1 row in set (0.00 sec) 10 ALL - FULL TABLE SCAN을 의미 . INNODB도 FULL TABLE SCAN이나 INDEX FULL SCAN과 같은 대량의 디스크 I/O를 유발하는 작업을 위해 한꺼번에 많은 페이지를 읽어드리는 기능을 제공. - 리드 어헤드(Read Ahead) : 연속적으로 인접한 페이지가 연속해서 몇 번 읽히게 되면 백그라운드로 작동하는 읽기 스레드가 최대 한번에 64개의 페이지씩 한꺼번에 디스크로부터 읽어드리는 방식
1.테스트 테이블 DDL 스크립트 CREATE TABLE DA_EMP_DEPT ( EMPNO INT(11) NOT NULL, DEPTNO CHAR(4) NOT NULL, START_DATE DATE NOT NULL, END_DATE DATE NOT NULL, PRIMARY KEY (EMPNO,DEPTNO) ) ENGINE =INNODB; CREATE TABLE EMP ( EMPNO INT(4) NOT NULL PRIMARY KEY, ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT(4), HIREDATE DATE, SAL INT(7), COMM INT(7), DEPTNO INT(2) ) ENGINE =INNODB; CREATE TABLE DEPT ( DEPTNO INT(2) NOT NULL PRIMARY KEY , DNAME VARCHAR(14 ), LOC VARCHAR(13 ) ) ENGINE =INNODB; 2.테스트 데이터 DML 스크립트 INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7369','10',CURRENT_DATE,CURRENT_DATE+1); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7499','20',CURRENT_DATE,CURRENT_DATE+2); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7521','20',CURRENT_DATE,CURRENT_DATE+3); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7566','40',CURRENT_DATE,CURRENT_DATE+4); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7654','50',CURRENT_DATE,CURRENT_DATE+5); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7698','60',CURRENT_DATE,CURRENT_DATE+6); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7782','70',CURRENT_DATE,CURRENT_DATE+7); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7788','80',CURRENT_DATE,CURRENT_DATE+8); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7839','90',CURRENT_DATE,CURRENT_DATE+9); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7844','100',CURRENT_DATE,CURRENT_DATE+10); INSERT INTO DA_EMP_DEPT(EMPNO,DEPTNO,START_DATE,END_DATE) VALUES('7876','110',CURRENT_DATE,CURRENT_DATE+11); CREATE INDEX EMP_ENAME_IDX01 ON EMP(ENAME); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) Values (7369, 'SMITH', 'CLERK', 7902, CURRENT_DATE, 800, 20); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) Values (7499, 'ALLEN', 'SALESMAN', 7698, CURRENT_DATE, 1600, 300, 30); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) Values (7521, 'WARD', 'SALESMAN', 7698, CURRENT_DATE, 1250, 500, 30); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) Values (7566, 'JONES', 'MANAGER', 7839, CURRENT_DATE, 2975, 20); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) Values (7654, 'MARTIN', 'SALESMAN', 7698, CURRENT_DATE, 1250, 1400, 30); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) Values (7698, 'BLAKE', 'MANAGER', 7839, CURRENT_DATE, 2850, 30); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) Values (7782, 'CLARK', 'MANAGER', 7839, CURRENT_DATE, 2450, 10); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) Values (7788, 'SCOTT', 'ANALYST', 7566, CURRENT_DATE, 3000, 20); Insert into EMP (EMPNO, ENAME, JOB, HIREDATE, SAL, DEPTNO) Values (7839, 'KING', 'PRESIDENT', CURRENT_DATE, 5000, 10); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) Values (7844, 'TURNER', 'SALESMAN', 7698, CURRENT_DATE, 1500, 0, 30); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) Values (7876, 'ADAMS', 'CLERK', 7788, CURRENT_DATE, 1100, 20); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) Values (7900, 'JAMES', 'CLERK', 7698, CURRENT_DATE, 950, 30); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) Values (7902, 'FORD', 'ANALYST', 7566, CURRENT_DATE, 3000, 20); Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) Values (7934, 'MILLER', 'CLERK', 7782, CURRENT_DATE, 1300, 10); Insert into DEPT (DEPTNO, DNAME, LOC) Values (10, 'ACCOUNTING', 'NEW YORK'); Insert into DEPT (DEPTNO, DNAME, LOC) Values (20, 'RESEARCH', 'DALLAS'); Insert into DEPT (DEPTNO, DNAME, LOC) Values (30, 'SALES', 'CHICAGO'); Insert into DEPT (DEPTNO, DNAME, LOC) Values (40, 'OPERATIONS', 'BOSTON');
'MariaDB > SQL Tuning' 카테고리의 다른 글
[MariaDB][성능] 스칼라 서브쿼리 실행계획2 (0) | 2016.08.17 |
---|---|
[MariaDB][성능]인라인뷰 처리 방식 분석 (0) | 2016.08.17 |
[MariaDB][성능] 스칼라 서브쿼리 실행계획 (0) | 2016.08.15 |
[MariaDB][성능] order by 실행계획 (0) | 2016.08.10 |
[MariaDB][성능] 실행계획 분석[정리필요] (0) | 2016.08.07 |