parece ser bastante aceptado que la inclusión del propietario del esquema de la consulta aumenta el rendimiento db, por ejemplo .:nombres de tabla completo
SELECT x FROM [dbo].Foo
vs SELECT x FROM Foo
.
Esto se supone que guarda una búsqueda, porque de lo contrario SQL Server buscará una tabla Foo que pertenezca al usuario en el contexto de conexión.
Hoy me dijeron que siempre incluye el nombre de la base de datos mejora el rendimiento de la misma manera, incluso si se está consultando la base de datos que ha seleccionado en la cadena de conexión:
SELECT x FROM MyDatabase.[dbo].Foo
¿Hay algo de verdad en esto? ¿Tiene esto sentido como un estándar de codificación? ¿Algo de esto (incluso el primer ejemplo) se traduce en beneficios mensurables?
¿Estamos hablando de unos pocos ciclos para buscar un diccionario adicional en el servidor de la base de datos, más SQL inflado y concatenación adicional en el servidor web (u otro cliente)?
Si marca la diferencia, agrega un problema de mantenimiento ya que todas sus consultas tienen el nombre de la base de datos en ellas. Hace que sea muy difícil cambiar el nombre de una base de datos. – adrianbanks
Depende de lo que su mantenimiento. Tener nombres totalmente calificados dentro de mi procedimiento particular garantiza que funcione exactamente de la misma manera, incluso cuando esté conectado a un DB diferente en mi entorno de prueba; en mi caso particular, quiero el entorno de prueba. para producir resultados de "producción" en lo que respecta al proceso almacenado.Tal vez no sea una buena práctica, me doy cuenta, pero nuestro vasto panorama de tiendas de datos no tiene contrapartes totalmente reproducidas en un estado limpio y aislado en algún dominio TEST separado, por lo que muchos de nuestros entornos TEST/DEV son, en el mejor de los casos, una mezcla de datos falsos y de producción. – bkwdesign