對於輸入提示搜索(當您鍵入到它顯示的表單中的匹配項在下拉列表中匹配時),我有以下查詢。這個查詢運行良好,直到我切換到大約一百萬條記錄的數據庫。現在需要15秒才能顯示比賽。 由於搜索匹配在鍵入時顯示,查詢位於循環內。是否有任何關於這個查詢可以改變以加快速度?使用mysql提高數據庫查詢的速度
$diagnosis = isset($_GET['diagnosis']) ? $_GET['diagnosis'] : '';
$data = array();
if ($diagnosis) {
$query = explode(' ', $diagnosis);
for ($i = 0, $c = count($query); $i < $c; $i ++) {
$query[$i] = '+' . mysql_real_escape_string($query[$i]) . '*';
}
$query = implode(' ', $query);
$sql = "SELECT diagnosis, icd9, MATCH(diagnosis) AGAINST('$query' IN BOOLEAN MODE) AS relevance
FROM icd10 WHERE MATCH(diagnosis) AGAINST('$query' IN BOOLEAN MODE) HAVING relevance > 0 ORDER BY relevance ";
$r = mysql_query($sql);
while ($row = mysql_fetch_array($r)) {
$data[] = $row;
}
}
echo json_encode($data);
exit;
請提供以前和當前服務器設置的詳細信息 – Drew
**警告**:如果您剛學習PHP,請不要學習過時的['mysql_query'](http://php.net/ manual/en/function.mysql-query.php)接口。這很糟糕,並且已經在PHP 7中被刪除了。像[PDO不是很難學的東西](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-php-pdo- for-database-access /)以及[PHP The Right Way](http://www.phptherightway.com/)等指南有助於解釋最佳實踐。你的用戶參數是** not ** [正確轉義](http://bobby-tables.com/php),你在這裏有嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 – tadman
我知道這是貶值。然而,如果我升級我的PHP,我將不得不經歷約300頁充滿mysql查詢和chnage他們,因爲我認爲,當我升級,整個網站將無法正常工作,除非我改變每一個查詢。 – user2557039