2017-10-13 1 views
0

"이유"를 찾고있었습니다. 이 쿼리에서 결과를 표시하려고하지만 이전에 한 테이블의 URL 필드와 다른 테이블의 URL 필드를 비교합니다 (URL이 정확히 같지 않기 때문에 CONCAT을 사용합니다).하지만 추가하려고하면 "Order by ..."명령문은 서버가 연결을 끊을 때까지 응답하는 데 오랜 시간이 걸립니다. (가) CONCAT 고용 결합 조건Mysql - "주문"이 "CONCAT"을 사용하여 작동하지 않음

SELECT id, url, title MATCH(title, tags, category) AGAINST('white dogs') as score 
FROM Items 
LEFT JOIN Deleted_Items 
ON Deleted_Items.url LIKE CONCAT(Items.url , '%') 
WHERE Deleted_Items.url IS NULL 
AND MATCH(title, tags, category) AGAINST('white dogs' IN BOOLEAN MODE) 
ORDER BY score DESC 
LIMIT 30 
+0

선택시 테이블을 참조해야합니다. 그렇지 않으면 중복으로 해석되어 시간이 만료 될 때까지 계속 검색합니다. –

+0

테이블의 이름을 각 열에 추가하여 테스트했지만 결과는 동일했습니다. *) – Kokox

답변

1

()는 sargable 때문에 본질적으로 비효율적 더하기 연산에 정렬 아니다. 예를 들어 데이터를 임시 테이블에 보관하여 도움을 줄 수도 있습니다.

그런 다음 해당 테이블에서 일치 검색 및 순서를 수행하십시오.

관련 문제