mysql 실행계획 질문 드립니다 0 1 1,829

by 쿼리초보 [2023.06.22 15:47:41]


실행계획.png (9,037Bytes)
학생 테이블.png (6,789Bytes)
학급 테이블.png (6,588Bytes)

CREATE TABLE `student` (

`no` int,

`name` varchar(6),

`class_name` varchar(100),

PRIMARY KEY (`no`,`name`,`class_name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='학생';



CREATE TABLE `class` (

`no` int NOT NULL,

`name` varchar(6) NOT NULL,

`name2` varchar(100) DEFAULT NULL,

PRIMARY KEY (`no`,`name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='학급';

 

예시 테이블을 2개 만들고, 쿼리를 실행 하였는데
저는 student 테이블을 ALL 타입, Class 테이블 PK로 eq_ref 처리하고 싶은데
실제 실행계획은 class 테이블 ALL, student 테이블 ref 처리로 결과가 나오네요.. (실제 테이블에도 PK만 걸려있어서 PK만 걸었습니다!)

제가 원하는 처리를 하려면 어떻게 해야하는지 알 수 있을까요??

바쁘시겠지만, 왜 실행계획이 이렇게 나온지도 알려주시면 정말 감사드리겠습니다!

explain
select *
  from student student
  left outer JOIN class class
  ON student.class_name = class.name
 where student.no = 1;

 

by 닭뇌 [2023.06.22 18:10:29]
select *
  from student student
  left outer JOIN class class
  ON student.class_name = class.name
 where student.no+0 = 1;

조건에서 student.no 를 가공하면 어떤가요??

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입