Mamy problem z wydajnością wyszukiwania pełnotekstowego w serwisie aukcyjnym AUKCJE FM - ponad 700 000 rekordów aukcji.
Użyto funkcji match against + LEFT OUTER JOIN
Jak można zoptymalizować wyszukiwanie?
Oto kod
$qs ="select count(*) as total FROM AUKCJE_auctions au LEFT OUTER JOIN AUKCJE_itemvariants iv ON au.id=iv.id WHERE ( au.suspended='0') AND ($wher au.private='n' $ora) AND $varq AND au.starts<=".$NOW." ORDER BY $sort"; if($rsl) { $total = (int)$hash[0]; $TOTALAUCTIONS = $total; $OFFSET = 0; $PAGE = 1; } else { $OFFSET = ( $PAGE - 1) * $limit_aukcji; } $qs ="select au.* FROM AUKCJE_auctions au LEFT OUTER JOIN AUKCJE_itemvariants iv ON au.id=iv.id WHERE ( au.suspended='0') AND ($wher au.private='n' $ora) AND $varq AND au.starts<=".$NOW." if(!isset($_SESSION["PHPAUCTION_LOGGED_IN"]) && (($location_radio=='3') || ($location_radio=='4'))) { $ERR = $text_574; } elseif($title == '') { $ERR = $text_660; } else { include $include_path."browseitems.inc.php"; $TPL_auctions_list_value=browseItems($result); $TPL_auctions_total_value .=""; if ($auctions_count==0) { $TPL_auctions_total_value = ""."$ERR_114"; } foreach ($states as $key=>$val) { $TPL_states_list.= " <OPTION VALUE='$val'"; if($val==$state && $val != '') { $TPL_states_list.= " SELECTED='true'"; } $TPL_states_list.= " >".$val."</OPTION>\n"; }
nikt nie ma pomysłu?