¿Qué es mejor en cuanto a rendimiento?rendimiento: selección de unión simple frente a selecciones simples múltiples
Respuesta
Solo hay una forma de saberlo: el tiempo.
En general, creo que una sola combinación permite que la base de datos haga muchas optimizaciones, ya que puede ver todas las tablas que necesita para escanear, la sobrecarga se reduce y puede generar el conjunto de resultados localmente.
Recientemente, tenía unos 100 Select-declaraciones que me transformó en una combinación en mi código. Con algunos índices, pude pasar de 1 minuto de funcionamiento a aproximadamente 0,6 segundos.
Una unión única generalmente superará múltiples selecciones simples. Sin embargo, hay demasiados casos diferentes que se ajustan a su pregunta. No es sabio agruparlos bajo una sola regla simple.
Más importante aún, una sola unión generalmente será más fácil para el siguiente programador comprender y revisar, siempre que usted y el siguiente programador "hablen el mismo idioma" cuando usa SQL. Estoy hablando del lenguaje de conjuntos de tuplas.
Igualmente importante es que el diseño físico de la base de datos y el diseño de consultas deben enfocarse primero en las preguntas que darán como resultado una mejora de diez por una velocidad, no en una velocidad de 10%. Si estuvieras haciendo miles de selecciones simples frente a una sola, podrías obtener una ventaja de diez por uno. Si está haciendo tres o cuatro selecciones simples, no verá una gran mejora en un sentido u otro.
todo depende de la forma en la base de datos optimizará las uniones, y el uso de índices.
tuve una consulta lenta y compleja con una gran cantidad de combinaciones. Luego lo subdividí en 2 o 3 querys menos complejas. La ganancia de rendimiento fue asombrosa.
Pero al final, "depende", debe saber dónde está el cuello de botella.
No trate de escribir su propio bucle unirse como un grupo de selecciones. Su servidor de base de datos tiene muchos algoritmos inteligentes para hacer combinaciones. Además, su servidor de base de datos puede usar las estadísticas y el costo de acceso estimado para elegir dinámicamente un algoritmo de combinación.
unirse a El algoritmo del servidor de base de datos es - por lo general - mejor que cualquier cosa que pueda inventar. Saben más acerca de la E/S física, el almacenamiento en caché y lo que no.
Esto le permite centrarse en su dominio problemático.
Si está utilizando SQL Server (no estoy seguro si esto está disponible con otros RDBMS), le sugiero que agrupe un plan de ejecución con los resultados de la consulta. Esto le dará la capacidad de ver exactamente cómo se están ejecutando sus consultas y qué está causando cuellos de botella.
Hasta que sepa lo que SQL Server está haciendo en realidad, no me atrevería a adivinar qué consulta es mejor.
Si su base de datos tiene muchos datos ... y hay varias combinaciones, utilice indexación para un mejor rendimiento.
externa Si hay izquierda/derecha se une en este caso, a continuación, utilizar múltiples selecciones.
Todo depende de su tamaño de base de datos, su consulta, los índices (que incluyen claves primarias y extranjeras también) ... Uno no puede llegar a la conclusión con sí/no en su pregunta.
Como se ha dicho antes, no hay una respuesta correcta sin contexto.
La respuesta a esto depende de (a partir de la parte superior de la cabeza):
- la cantidad de unirse a
- del tipo de unirse a
- indexación
- la cantidad de reutilización puede tener para cualquiera de las piezas separadas que se unirán
- la cantidad de datos que se procesarán
- la configuración del servidor
- etc.
Una cosa a tener en cuenta, además de lo que se ha dicho, es que selecciona volverán más datos a través de la red que la une probablemente. Si la conexión de red ya es un cuello de botella, esto podría empeorar las cosas, especialmente si esto se hace con frecuencia. Dicho eso, su mejor apuesta en cualquier situación de rendimiento es probar, probar y probar.
- 1. Una consulta compleja frente a consultas simples múltiples
- 2. Múltiples selecciones en VIM
- 3. Selección de SQL multiplicidad de elementos en la unión
- 4. Administración de selecciones múltiples con MVVM
- 5. Prevenir selecciones múltiples del mismo valor
- 6. Procesamiento frente a (simple) Java
- 7. rendimiento de unión versus unión todos
- 8. Rendimiento: BinaryFormatter frente a XmlSerializer
- 9. Rendimiento/estabilidad de un archivo de memoria asignado - Native o MappedByteBuffer - frente a simple ol FileOutputStream
- 10. ¿Cómo soportar múltiples selecciones de texto en el navegador?
- 11. Raqueta interactiva frente a rendimiento compilado
- 12. Cronómetro de alto rendimiento frente a Cronómetro
- 13. Contador de rendimiento frente a ETW
- 14. Pruebas de rendimiento frente a perfiles
- 15. CouchDB: documento único frente a "unión" de documentos juntos
- 16. ¿Haciendo modificaciones de rendimiento simples a un contenedor ya compilado?
- 17. jQuery encuentra frente a la selección contexto
- 18. Rendimiento de Scala XML frente a Java XML
- 19. ¿Cómo establecer múltiples selecciones en ASP.NET ListBox?
- 20. RESTO frente a frente SOAP y simple página web, etc
- 21. Datos principales frente a Sqlite y rendimiento
- 22. Rendimiento frente a la calidad del código
- 23. Supervisión del rendimiento: Ganglia frente a grafito
- 24. Algoritmo de selección de características más simple
- 25. rendimiento D: Unión vs @property
- 26. unión de componentes frente a findComponent(): ¿cuándo usar qué?
- 27. Cuándo usar colecciones frente a propiedades múltiples
- 28. SQL Server interbloqueos entre seleccionar/actualizar o múltiples selecciones
- 29. CASO frente a consultas de ACTUALIZACIÓN múltiples para grandes conjuntos de datos - Rendimiento
- 30. Rendimiento de selección pobre RavenDB