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 ?

 36
Author: Community, 2012-12-06

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.

 35
Author: echo_Me, 2014-04-21 07:06:35