0

내 응용 프로그램에서 일부 쿼리의 성능을 최적화하려고합니다.SQL_CALC_FOUND_ROWS를 사용하여 MySQL 전체 텍스트 검색 성능

여러 조인 및 전체 텍스트 검색을 사용하는 쿼리에서 나는 페이지 매김에 대한 첫 번째 쿼리에 SQL_CALC_FOUND_ROWS을 사용합니다.

불행히도 쿼리의 성능이 매우 느립니다. SQL_CALC_FOUND_ROWS이 없으면 쿼리 속도가 약 100 배 빨라집니다.

이 경우 더 나은 성능을 얻을 수 있습니까?

SQL_CALC_FOUND_ROWS이없는 단일 카운트 쿼리를 시도했지만이 쿼리는 SQL_CALC_FOUND_ROWS 쿼리보다 추가로 느립니다.

답변

0

테이블 구조와 쿼리에 대해 알지 못하면 쿼리가 더 빠를 지 알 수 없습니다.

SQL_CALC_FOUND_ROWS을 사용하면 먼저 모든 레코드를 처리해야하지만 LIMIT 10을 사용하면 처음 10 개의 레코드가 발견 된 후 레코드 처리를 중지 할 수 있습니다. 그래서 성능 차이가 있습니다. 카운트 또는 SQL_CALC_FOUND_ROWS를 사용하지 않고 동일한 결과를 빠르게 얻을 수있는 방법은 없습니다.

그러나 대부분의 경우 쿼리가 다른 방식으로 최적화 될 수 있습니다.

전체 텍스트 검색을 찾으려면 스핑크스 사용을 고려하십시오. 내 경험으로는 항상 MySQL보다 성능이 우수합니다. http://www.sphinxsearch.com/