É Distinto adicionar qualquer valor ou fazer algo nesta Consulta?

1

Supondo que o campo Users.Id é único, incrementado automaticamente MINHA PERGUNTA PRINCIPAL: É "Distinto", nesta consulta, fazendo qualquer coisa, é completamente inútil tê-lo nesta consulta específica?

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'))

-

Se a consulta foi alterada para:

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

Então, eu poderia ter apenas Jane Smith ou John Smith como resultado, mas não os dois ou qualquer outra pessoa com o nome Smith, correto?

(A consulta principal é a original)

    
por NZ Dev 21.03.2018 / 01:08

1 resposta

0
A cláusula

DISTINCT remove o registro duplicado da saída da consulta selecionada. Portanto, se qualquer uma das colunas SELECT em sua consulta for UNIQUE, não há sentido em usar DISTINCT. Pode diminuir o desempenho, pois o servidor db tentará descobrir os registros duplicados que não estão lá. Na primeira consulta, uma vez que você está retornando o ID do usuário, que é Único - Mesmo que você remova o Exclusivo, os resultados não serão alterados e você também deverá ver um melhor desempenho.

Na sua segunda consulta, se dois ou mais usuários tiverem o mesmo nome, você terá um resultado.

    
por 01.04.2018 / 19:16

Tags