DB/SQL

MySQL 쿼리 정리

호두밥 2021. 10. 10. 17:17

테스트 데이터 만들기

테이블 생성 CREATE TABLE

CREATE TABLE T (
	ID INT PRIMARY KEY,
	A INT,
	B INT,	
	C INT,
	TYPE CHAR(2)
);

인덱스 생성 CREATE INDEX

CREATE INDEX IDX_1 ON T(B,A);

 

PL/SQL로 데이터 만들기

DELIMITER $$
-- 프로시저 INSERTDATA 선언 시작
CREATE PROCEDURE INSERTDATA()
BEGIN
	DECLARE id INT; -- 증가 변수 ID 선언
	SET id = 1;		-- 변수 ID의 초기값 선언
	WHILE id < 100 DO -- 변수 ID의 값이 100보다 작은 경우 루프 실행
		INSERT T VALUES( id, id/10, id/100, id/1000, 'A'); -- INSERT문 실행
		SET id = id + 1;	-- 1턴마다 ID의 값 1씩 증가
	END WHILE;

END$$ -- 프로시저 선언 종료
DELIMITER ;

CALL INSERTDATA(); --프로시저 실행

프로시저 삭제하기

DROP PROCEDURE INSERTDATA;

 

실행계획, 테이블 정보 조회

 

테이블의 인덱스 보기 SHOW INDEX

SHOW INDEX FROM T;

 

테이블의 칼럼 보기 SHOW COLUMNS

SHOW COLUMNS FROM T;

 

 

 

테이블 생성쿼리 보기 SHOW CREATE TABLE

SHOW CREATE TABLE T;

 

쿼리의 실행계획 보기 EXPLAIN

EXPLAIN 
	SELECT B, A, COUNT(1) FROM T GROUP BY B,A;

 

쿼리 실행 후 COST 보기 SHOW STATUS 

SELECT * FROM T  IGNORE INDEX(IDX_1) WHERE B = 0;
SHOW STATUS LIKE 'Last_Query_Cost';