Pregunta

Hemos entregado un proveedor de base de datos que a este punto he podido evitar hacer cambios en la estructura de base de datos a. Vamos a ser pronto consultar directamente las tablas directamente para un proyecto relacionado. Con el fin de tirar de todos los datos que necesitamos, tendremos que crear una gran declaración de SQL con múltiples uniones.

select ... from table1
union
select ... from table2
...
select ... from tableN

La velocidad es la máxima prioridad para este proyecto. ¿Sería más rápido para crear una vista de hacer las combinaciones que entonces sólo consultar este punto de vista (y por tanto de realizar cambios en la base de datos del proveedor) o simplemente ejecutar la declaración de la Unión de nuestra aplicación?

Yo sé los problemas potenciales que implica realizar cambios en la base de datos del proveedor por lo tanto, por qué estoy en busca de retroalimentación.

¿Fue útil?

Solución

Cuando se trata de bases de datos de proveedores que sería muy reacios a realizar cambios en cualquier tabla existente. La adición de algo así como un punto de vista parece un poco más seguro ya que usted es el único que va a utilizar. Mi mayor preocupación con la vista sería si alguna vez tiene una actualización de su vendedor que hizo cambios en su base de datos y es posible que pierda la vista.

No creo que vería cualquier beneficio de rendimiento del uso de la vista, a menos que utilizó una vista indizada. Lamentablemente no se puede crear índices en una vista que se crea mediante una unión (al menos en SQL Server).

En lo personal cuando se trata de poner la lógica en la aplicación vs ponerlo en la base de datos que se inclinan hacia DB. En mi experiencia de este tipo de cambios son más fáciles de implementar y mantener.

Si yo estuviera en su situación me gustaría ir por delante crear la vista si se va a hacer su vida más fácil. Pero, de nuevo, no esperan mejoras de rendimiento.

Otros consejos

No hay una visión no será más rápido (excepto por el tiempo de desarrollo).

Lo que sería más rápido es utilizar UNION ALL si va a trabajar. UNIÓN busca registros duplicados y los retira a partir del resultado final. Si sabe que los registros por diseño (como cada tabla es para un clinet differnt o cada mesa tiene un intervalo de fechas differnt) no puede ser duplicado, UNION ALL no trata de DISTINCT el conjunto de resultados y por lo tanto corre mucho más rápido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top