나는 이것을 추적하려고 많은 시간을 보냈습니다. 내 사이트 (http://www.devbridge.com/projects/autocomplete/jquery/)에 박스형 자동 완성 기능을 사용했습니다. 단어를 입력 할 때 mySQL 데이터베이스에서 검색 할 곳을 처리하기 위해 페이지에 GET 변수로 보냅니다. 페이지는 다음과 같습니다.큰 데이터베이스 검색으로 자동 완료가 느림
$get = $_GET['query'];
$query = "SELECT title,author,id,isbn10,isbn13 FROM textbook
WHERE title LIKE '" . $get . "%'
OR author LIKE '" . $get . "%'
LIMIT 5
";
$result = mysql_query($query,$connection);
$resString = "";
$idString = "";
while($data = mysql_fetch_array($result)){
$resString .= "'" . title($data['title']) . " by " . $data['author'] . "',";
$idString .= "'" . $data['id'] . "',";
}
$resString = rtrim($resString, ',');
$idString = rtrim($idString, ',');
$code = "{\n";
$code .= "query:'" . $get . "',\n";
$code .= "suggestions:[" . $resString . "],\n";
$code .= "data:[" . $idString . "]\n";
$code .= "}";
echo $code;
결과로 읽히고 다시 촬영 된 기본 JSON 데이터 세트를 출력합니다. 문제는 그것이 정말로 느리다는 것이다. "LIMIT 5"는 톤을 약간 늘리는 데 도움이되었습니다. 그러나 초기 결과 집합이 나타난 후에도 여전히 느리게 실행됩니다. 나는 "콧노래"를 타이핑 할 수 있으며, 빠른 결과 세트로 돌아올 것입니다. 그러나 그 이후의 모든 글자/단어는 4-6 초가 걸릴 것입니다. 데이터베이스는 대략 300K 레코드입니다. 임 그냥 물건을 빠르게하는 방법을 알아 내려고
database http://semesterkey.com/images/data.jpg
: 내 데이터베이스 구조 페이지의 사진을 첨부. 나는 내 데이터베이스 구조일지도 모른다고 생각한다. 나는 전혀 모른다. 도와 주셔서 미리 감사드립니다.
@ Yogesh가 맞습니다. 검색 할 필드를 색인화해야합니다. –
클러스터 된 인덱스 또는 클러스터되지 않은 인덱스를 권장 하시겠습니까? 여기 뉴비! – user791187