Есть ли способ, чтобы сделать этот запрос быстрее:Simplify/ускорить SQL запрос
$qur = mysql_query("
SELECT id, firstname, lastname,
(firstname = '$firstname' AND lastname = '$lastname') AS full FROM users
WHERE (firstname = '$firstname' AND lastname='$lastname')
OR (firstname LIKE '$firstname%' AND lastname LIKE '$lastname%')
OR firstname LIKE '$firstname%' OR lastname LIKE '$firstname%'
ORDER BY (firstname = '$firstname' AND lastname='$lastname') DESC");
Что мне нужно в этом:
Check if its a full match.
Get firstname lastname
Being able to only enter lastname "Fox" and let it find the firstname (get all users with lastname Fox, and show their firstname too and display check the script at bottom.)
Being able to only enter the firstname "Megan" and let it find the lastname (^)
Being able to only enter Megan F, and let it show "Megan Fox"
Being able to only enter Me Fox, and let it show "Megan Fox"
Это то, что она делает для меня, работать без нет проблема. Хотя, возможно, я думаю, что это будет работать медленно, когда много пользователей запустить его
Я использую его с этим:
if (mysql_num_rows($qur) == 1) {
$get = mysql_fetch_array($qur);
if($get["full"] == 1){
echo $get["id"];
}else{
echo "Did you mean: ".$get["firstname"]." ".$get["lastname"]." ?";
}
}elseif(mysql_num_rows($qur) > 1){
while($get = mysql_fetch_array($qur)) {
$name[] = $get["firstname"]." ".$get["lastname"];
}
if(count($name) > 1) {
echo 'Who did you mean?<br>';
} else {
echo 'Did you mean: ';
}
echo implode('<br>', $name);
}
Если не быть "CONCAT (Firstname, '', фамилия) AS полный" вместо «(имя = '$ ПгвЬЫате' и фамилия = '$ lastname') AS full "? –
@Paulo Я не думаю, что это то, что он собирается делать. Он хочет иметь логический эквивалент, когда будет полный матч. – cwallenpoole
@Yes Christopher – Johnson