отщепления ОШ в различные UNIONed запросы должны позволить MySQL более эффективно использовать свои индексы.
Я предполагаю, что вы ищете предметы, которые начинаются только с введенной фразы. Если это так, это может помочь, поскольку он будет выполнять только комбинированный поиск first_name и last_name, если в поисковой фразе есть пробел.
$result = "SELECT * FROM resume
WHERE first_name LIKE '$sKeyword%'
UNION
SELECT * FROM resume
WHERE last_name LIKE '$sKeyword%'
UNION
SELECT * FROM resume
WHERE email LIKE '$sKeyword%'
UNION
SELECT * FROM resume
WHERE phone LIKE '$sKeyword%'
UNION
SELECT * FROM resume
WHERE zip_code LIKE '$sKeyword%'
UNION
SELECT * FROM resume
WHERE find_us LIKE '$sKeyword%'
UNION
SELECT * FROM resume
WHERE CONCAT(first_name,' ',last_name) like '$sKeyword%'";
$sKeywordArray = explode(' ', $sKeyword);
IF (count($sKeywordArray) > 1)
{
$result2 = array();
foreach($sKeywordArray $value)
{
$result2[] = "(first_name like '$value%' OR last_name like '$value%')";
}
$result .= " UNION SELECT * FROM resume WHERE ".implode(' AND ', $result2)
}
В чем проблема? –
, так вы получаете какую-либо ошибку? –
ну, есть ли какие-либо ошибки или что-то еще ... потому что я думаю, что это сработает просто отлично .. –