私はこれを追跡しようとかなりの時間を費やしました。私は私のサイト(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データセットを出力します。ページには、次のようになります。問題はそれが本当に遅かったということです。 "LIMIT 5"は、それをスピードアップするためにトンを助けました。しかし、最初の結果セットが表示されてからまだ遅く実行されています。私は "ハム"で入力することができますし、それはすぐに結果セットと戻ってくるだろうが、その後の任意の文字/単語が表示するには4-6秒かかります。データベースはおよそ300Kレコードです。私のデータベース構造のページの画像を添付:
database http://semesterkey.com/images/data.jpg
イムだけで物事をスピードアップする方法を理解しようとしています。私はそれが私のデータベース構造かもしれないと思う、それはどのように私はクエリをすることができますか?私はちょっと考えていない。あなたの助けを前もってありがとう!
@ Yogeshが正しいとすれば、検索するフィールドをインデックスする必要があります。 –
クラスタ化インデックスまたは非クラスタ化インデックスをお勧めしますか?初心者ここ! – user791187