쿼리가 느려서 EXPLAIN을 찍어보라는 조언을 받았는데, 막상 결과를 보니까 무슨 말인지 하나도 모르겠어서 질문드려요. type이 뭐고 rows가 뭐고 Extra에 뭐가 뜨는데 이걸 어떻게 읽는 건지 감이 안 잡힙니다.
예를 들어 이런 쿼리를 EXPLAIN 하면
EXPLAIN SELECT * FROM orders
WHERE user_id = 123 AND status = 'paid';
type 칼럼에 ALL이라고 뜨면 안 좋은 거라고 들었는데, 그럼 뭐가 떠야 인덱스 잘 타는 건가요? ref나 range 이런 것도 있던데 순서상 뭐가 좋은 건지 모르겠어요. 그리고 rows 숫자가 실제 결과 건수랑 다르던데 이건 그냥 예상치인 건가요.
Extra에 Using filesort나 Using temporary가 뜨면 손봐야 한다는 글도 봤는데, 이게 왜 나쁜 신호인지도 잘 모르겠고요. 인덱스를 걸긴 걸었는데 실제로 타는지 안 타는지 EXPLAIN에서 어디를 봐야 확실하게 알 수 있는지 정리해서 알려주시면 감사하겠습니다.