1

Предполагая пользователей.Поле идентификатора уникально, автоматически увеличивается. МОЙ ГЛАВНЫЙ ВОПРОС: "Различен", в этом запросе, что-то делает, совершенно бессмысленно иметь его в этом конкретном запросе?

SELECT  DISTINCT users.id, CONCAT(users.firstname, ' ', users.surname) AS name FROM users 
WHERE users.id!=$me AND (LOWER(users.firstname) LIKE '$term%' AND (email='$email' OR username='$email'))

-

Если запрос был изменен на:

SELECT  DISTINCT users.surname, firstname, surname
FROM users WHERE surname = 'Smith''

Тогда я могу получить в качестве результата только Джейн Смит или Джона Смита, но не их обоих или кого-либо еще с именем Смит, верно?

(Верхний запрос является оригиналом)

1 ответ1

0

Предложение DISTINCT, удаляет дублирующую запись из вывода запроса на выборку. Итак, если какой-либо из столбцов SELECT в вашем запросе является УНИКАЛЬНЫМ, то нет смысла использовать DISTINCT. Это может замедлить производительность, так как сервер БД попытается обнаружить дублирующиеся записи, которых там нет. В первом запросе, так как вы возвращаете идентификатор пользователя, который является уникальным - поэтому даже если вы удалите уникальный, результаты не изменятся, и вы также должны увидеть более высокую производительность.

Во втором запросе, если два или более пользователей имеют одно и то же имя, вы получите один результат.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .