2012-05-14 3 views
1

MySQL이 LIKE 쿼리를 수행 할 때 쿼리를 설정 한 방법에 따라 (%)string(%) 검색 문자열은 선택한 내용 내에서 정확한 텍스트 일치를 찾습니다.mysql LIKE가 어떻게 결과를 정렬합니까?

어떻게 결과가 나오는 행이 일치하는 항목에 따라 정렬되는지 궁금합니다. 내 쿼리 LIKE 문자열 'frankly' 다음과 같은 내용이 테이블에 대해 조회되는 경우

예를 들어, :

id content 
------------- 
1 frankly, i find cake rather delicious 
2 frankly, i find cake repulsive, frankly 
3 i currently live on franklyn street 

는 특정 행이 다른 이상 선호 할 것인가?

+0

"EXPLAIN PLAN"은 "LIKE"쿼리가 순차적 검색을 유발하는지 여부를 알려줍니다. 그럴 경우 데이터베이스에있는 순서대로 반환됩니다. –

답변

5

MySql은 이와 같은 LIKE 쿼리의 순서를 보장하지 않습니다. 일반적으로 특정 주문을 원하면 ORDER BY를 사용하여 지정해야합니다.

특정 순서는 조인 형식 (해시 조인, 병합 조인 등) 및 데이터 액세스 방법 (인덱스 스캔, 순차 주사 등)과 같은 다른 여러 요소에 따라 다릅니다.

+2

+1 명시 적으로 주문을 지정하지 않은 경우 주문에만 의존하지 마십시오. –

0

등호는 일종의 필터입니다.

좋아요. 실제로 정렬 자체와 관련이 없습니다.

명시 적 정렬을 추가하지 않으면 기본적으로 행이 정렬됩니다 (키로 추측합니다).

+1

INNODB - 키, MyISAM 이상 - DB의 행 순서 또는 다른 필드에 사용되는 다른 키. –

+0

@Moshe, 나는 당신이 INNODB가 항상 열쇠에 의한다고 단호하게 말할 수 있다고 생각하지 않는다. 그것은 쿼리의 다른 부분이 무엇에 많이 의존 하는가? –

+0

쿼리에 ORDER 절이없고 다른 위치 (예 :'cat = 1' 및 인덱스'(cat, date) ')가 있으면 현재 버전에서 날짜순으로 순서가 변경됩니다 MariaDB 최적화 또는 기타 변경 사항) 작동하지만 신뢰하지는 않습니다. –

관련 문제