Usar a palavra-chave vs na cláusula-MYSQL [duplicado]
possível duplicado:
MySQL ON vs usando?
Query 1:
SELECT *
FROM users
JOIN orders ON (orders.user_id = users.user_id)
WHERE users.user_id = 1;
Query 2:
SELECT *
FROM users
JOIN orders USING (user_id)
WHERE user_id = 1;
quero juntar as encomendas e as tabelas de utilizadores para obter alguns dados. Funciona bem. O meu problema é que ambas as consultas produzem o mesmo conjunto de resultados, é o mesmo? Qual é o mais eficiente a ser usado? Qual deles é bom para o desempenho ? Qual é a melhor prática ?
1 answers
A cláusula USING
é algo que não precisamos mencionar na condição JOIN
quando estamos a recuperar dados de várias tabelas. Quando usarmos a cláusula USING
, esse nome específico da coluna deverá estar presente em ambas as tabelas, e a consulta SELECT
irá juntar-se automaticamente a essas tabelas usando o nome dado da coluna em USING
cláusula.
Para, por exemplo, se existirem dois nomes comuns de colunas no quadro, indicar então o nome comum desejado na CláusulaUSING
USING
é também usado ao executar SQL dinâmico.
Por exemplo,
EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num'
USING dept_id;
A cláusula
USING
: Isto permite-lhe indicar a tecla join pelo nome.A cláusula
ON
: esta sintaxe permite-lhe indicar os nomes das colunas para as teclas de junção em ambas as tabelas.
A cláusula de Utilização
A cláusula
USING
é usada se várias colunas partilharem o mesmo nome, mas não quiser juntar-se com todas estas colunas comuns. As colunas listadas na cláusula de uso não pode ter quaisquer qualificadores na declaração, incluindo a cláusula de onde.
A cláusula ON
A cláusula
ON
é usada para juntar tabelas onde os nomes das colunas não coincidem em ambas as tabelas. As condições de junção são removidas das condições do filtro na cláusula onde.