Sei que é uma boa prática e um aumento de desempenho no SQL Server prefixar o nome da tabela com o esquema ( dbo.TableName
) na FROM
cláusula de uma SELECT
instrução, mas você também deve usá-lo em outras cláusulas como o WHERE
ou ON
? Você também deve especificar o TABLE
nome columns
na cláusula where se o nome da coluna for exclusivo?
Considere dois cenários:
SELECT Col1, Col2, Col3
FROM dbo.Table
WHERE Col1 = Value;
e
SELECT Col1, Col2, Col3,
FROM dbo.Table
INNER JOIN dbo.Table2
ON Col1 = Col5
WHERE Col6 = Value;
No primeiro cenário, devo adicionar dbo.Table
a cada nome de coluna?
No segundo cenário, se eu adicionasse um alias a cada tabela, isso incluiria automaticamente os dados do esquema também ou ainda precisaria pré-fixar os nomes das colunas com o esquema.
E em ambos os cenários eu PRECISO prefixar as colunas com dados de esquema ou isso é inútil e não aumenta o desempenho?
Para tabelas únicas, os aliases de tabela podem ser excluídos.
O alias da tabela incluirá o nome da tabela COMPLETAMENTE qualificado.
por exemplo
dbo.Table as T1
, fará referência ao arquivodbo.Table
.Primeiro, seu exemplo de consulta está errado. Deveria ser (veja cuidadosamente os aliases que usei, caso contrário, estará sintaticamente errado - o SQL Server lançará erros).
Esperançosamente, a consulta acima também responderá à sua terceira pergunta.