我花了相當多的時間試圖追蹤這一個。我在我的網站上使用了盒裝自動完成功能(http://www.devbridge.com/projects/autocomplete/jquery/)。在輸入單詞時,它會將其作爲GET變量發送到頁面進行處理,以便在mySQL數據庫中進行搜索。該頁面如下所示:自動完成緩慢,大型數據庫搜索
$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數據集,並將其作爲結果讀取並回放。問題在於它真的很慢。 「極限5」幫助加速了一些。但是,初始結果集顯示後仍然運行緩慢。我可能會輸入「嗡嗡聲」,它會返回一個快速結果集,但之後的任何字母/單詞需要4-6秒才能顯示。數據庫大致是300K的記錄。附件是我的數據庫結構頁面的圖片:
database http://semesterkey.com/images/data.jpg
我只是試圖找出如何加快速度。我認爲這可能是我的數據庫結構,這可能是我如何查詢?我只是不知道。在此先感謝您的幫助!
@Yogesh是對的,你應該索引你搜索的字段。 – 2012-03-31 05:48:22
你會推薦一個聚集索引或非聚集索引嗎?新手在這裏! – user791187 2012-03-31 06:03:29