Não há diferença no desempenho. No entanto, você está usando esquemas agora (mesmo que não o conheça).
O uso de referências a esquema de objetos, como tabelas, procedimentos armazenados, UDFs, etc, que são não qualificado pelo esquema não ter um impacto no desempenho. As referências sempre devem ser qualificadas pelo esquema. Tais referências não qualificadas precisam ser resolvidas, e isso acontece assim:
- Primeiro, procure um objeto com o mesmo nome e tipo no esquema padrão do usuário sob cujas credenciais a sessão foi estabelecida (por exemplo
jsmith
). Se encontrado, essa instância é usada.
- Caso contrário, procure um objeto com o mesmo nome e digite no esquema
dbo
.
Isso tem vários efeitos:
- Na maioria das vezes, são necessárias duas pesquisas para resolver a referência, e não a pesquisa única necessária, se a referência for qualificada pelo esquema.
- O plano de execução obtido quando a consulta / procedimento armazenado / função definida pelo usuário está vinculada não pode ser armazenada em cache e reutilizada.
O efeito final que você encontrará apenas dolorosamente quando algo quebra é que usuários diferentes podem obter resultados diferentes de uma consulta ou procedimento armazenado. Algo como select * from foo join bar
pode funcionar bem para mim como proprietário do banco de dados; pode ser quebrado para o usuário jsmith
que, inadvertidamente ou não, criou uma tabela nomeada foo
sob seu próprio esquema ( jsmith.foo
) no mesmo banco de dados.
Por esse motivo, também, create
e as drop
instruções devem qualificar o esquema do nome do objeto que está sendo criado ou descartado.