2013-04-23 2 views
1

Facebook 그룹 중 하나에서 누군가 질문을했습니다.MySQL SELECT 쿼리의 성능 문제?

두 개의 쿼리가 있다고 가정합니다.

SELECT * FROM video WHERE video_id='45f54' AND video_type='youtube'; 

SELECT * FROM video WHERE video_type='youtube' AND video_id='45f54' 

video_id은 색인 필드입니다.

두 쿼리의 성능간에 차이가 있습니까?

누군가가 색인 필드를 넣은 후 바로 WHERE 절이 빠르다. ....하지만 왜? 둘 다 같지 않아?

+1

이봐 당신이 여기에 질문에 대한 좋은 설명 찾을 수 있습니다 짝짓기 : http://stackoverflow.com/questions/1252279/mysql-indices-and-order 을하지만 그것은 가장 왼쪽 인덱스라고합니다. MYSQL의 파서가 어떻게 작동하는지. 인덱스와 일치하는 WHERE 절의 열을 항상 유지하십시오. – medina

답변

2

테이블 video이 동일하다고 가정하면 MySQL 옵티마이 저가 WHERE 조건을 내부적으로 처리 할 때 그 2 개의 쿼리가 동일합니다. (아직하지 않은 경우) 여기에 비슷한 질문

최적화에 대한

링크의 부부는, 다음과 같은 사항을 고려

  • 변경 video_type을하실 수 있습니다 ENUM() 또는 INTEGER를 통해 링크하는 별도의 테이블 일 수도 있습니다.
  • (video_typ e, video_id)로 변경해야합니다.
  • 제한 VIDEO_ID의 길이, 즉 CHAR (5) 그들은 항상

가 개인적으로 나는 새 테이블 "video_types"를 만들어 주겠다고 5 개 문자 긴 경우 (videotypeID SMALLINT UNSIGNED AUTO_INCREMENT, videotype VARCHAR). 이렇게하면 비디오의 검색이 잠재적으로 훨씬 더 최적이 될 수 있지만 여전히 데이터에 크게 의존합니다.

+0

따라서 성능과 관련하여 쿼리가 * 정확히 * 동일합니까? – cipher

+0

내가 아는 한, 그렇습니다, 동일합니다. 다음은 동일한 답변을 가진 다른 사이트 중 하나에 대한 또 다른 질문입니다. http://dba.stackexchange.com/questions/1792/in-mysql-does-the-order-of-the-columns-in-a-where- clause-affect-query-performan 및 http://stackoverflow.com/questions/4582331/does-the-order-of-columns-in-a-query-matter –