No hay diferencia en el rendimiento. Sin embargo, está utilizando esquemas en este momento (incluso si no lo sabe).
El uso de referencias a objetos de esquema, como tablas, procedimientos almacenados, UDF, etc., que son no calificado por el esquema no tener un impacto en el rendimiento. Las referencias siempre deben calificarse por esquema. Tales referencias no calificadas deben resolverse, y eso sucede así:
- Primero, busque un objeto con el mismo nombre y escriba bajo el esquema predeterminado del usuario bajo cuyas credenciales se estableció la sesión (por ejemplo
jsmith
). Si se encuentra, se utiliza esa instancia.
- De lo contrario, busque un objeto con el mismo nombre y escriba debajo del esquema
dbo
.
Esto tiene varios efectos:
- La mayoría de las veces, se requieren dos búsquedas para resolver la referencia en lugar de la búsqueda única requerida si la referencia está calificada por el esquema.
- El plan de ejecución obtenido cuando la consulta / procedimiento almacenado / función definida por el usuario está vinculada no se puede almacenar en caché y reutilizar.
El efecto final que solo encontrará, dolorosamente, cuando algo se rompe es que diferentes usuarios pueden obtener diferentes resultados de una consulta determinada o procedimiento almacenado. Algo así select * from foo join bar
puede funcionar bien para mí como propietario de db; puede estar roto para el usuario jsmith
que, inadvertidamente o no, creó una tabla nombrada foo
bajo su propio esquema ( jsmith.foo
) en la misma base de datos.
Por esta razón, también, create
y las drop
declaraciones deben calificar esquemáticamente el nombre del objeto que se está creando o descartando.