Witam,
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;
if(!isset($PAGE) || $PAGE == 1
) { $OFFSET = 0;
$PAGE = 1;
} else {
$OFFSET = ( $PAGE - 1) * $limit_aukcji;
}
$PAGES = ceil($TOTALAUCTIONS / $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."
ORDER BY $sort LIMIT ".intval($OFFSET).",".intval($limit_aukcji);
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);
$auctions_count=count($TPL_auctions_list_value);
$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?