Siempre escuché a la gente decir mal sobre el uso de cursores y esto es especialmente en Microsoft SQL Server, ya que son muy lentos. ¿Es este el caso con los cursores en MySQL también? ¿Los cursores en MySQL también reducen el rendimiento? ¿Puede alguien aconsejar sobre el uso de cursores en MySQL?Cursores en MySQL - Bueno o malo
Respuesta
La mayoría de las bases de datos modernas (incluyendo MySQL) están diseñadas para realizar operaciones basadas en conjuntos. El problema con los cursores es que realizan operaciones basadas en filas (o procedimientos). Debido a esto, casi siempre verá éxitos de rendimiento cuando utilice cursores para hacer un trabajo que se puede hacer sin cursores en un DBMS moderno.
Eche un vistazo a this article, que hace un trabajo decente sobre los dos. Está escrito con SQL Server en mente, pero la mayoría de los conceptos se aplican.
Guau ... ¡Qué gran ... gran enlace! Trataré de hacer lo mejor que pueda tratando de entender los enfoques "Basado en conjunto" y "Procesal" en SQL y por qué el enfoque "Basado en conjunto" es mejor. Creo que puedo obtener un certificado después de aprender todo eso. –
Los cursores por naturaleza son iterativos, definitivamente van a ser más lentos independientemente de cualquier tipo de base de datos. Por lo tanto, debe hacer lo que sea para evitarlos y tratar de encontrar soluciones utilizando consultas SQL. Sin embargo, existen problemas que no se pueden resolver con consultas, por lo tanto, utilícelos solo cuando sea absolutamente necesario.
"definitivamente más lento" en comparación con ¿QUÉ? –
umm en comparación con la solución no basada en cursur - "direct sqls", si hay una posible. No sabía si no era obvio –
Oh, perdón, no sé qué son los "sqls directos". Por lo tanto, no puedo dar ninguna respuesta si son mejores o peores si se comparan entre sí. –
Solo crea y completa una tabla temporal. Así es como la mayoría de los RDBMS implementan cursores de todos modos.
- 1. php: Almacenar imagen en blob Mysql, ¿Bueno o malo?
- 2. C# String.IsNullOrEmpty: ¿bueno o malo?
- 3. PHP Typecasting - ¿Bueno o malo?
- 4. Objetos desnudos. Bueno o malo
- 5. O/R Mappers - Bueno o malo
- 6. ASP MVC HTML Helpers - ¿Bueno o malo?
- 7. Expresión regular Grupos nombrados: ¿Bueno o malo?
- 8. Sobrecarga del método: ¿diseño bueno o malo?
- 9. Clases de utilidades .. ¿Bueno o malo?
- 10. ¿Usar demasiada estática es malo o bueno?
- 11. ¿ToString() es bueno, malo o simplemente redundante?
- 12. ¿Es bueno o malo envolverse en el constructor?
- 13. Usar cadenas en lugar de símbolos: ¿bueno o malo?
- 14. WCF Self hosting en el cliente? Bueno o malo
- 15. Un modelo base en PHP MVC, ¿bueno o malo?
- 16. PHP - Convertir todos los errores en excepciones - ¿Bueno o malo?
- 17. ¿Está utilizando superglobals directamente bueno o malo en PHP?
- 18. Entity Framework: SingleConnect ObjectContext: bueno, malo o pensamiento oculto?
- 19. PHP - Función dentro de una función. ¿Bueno o malo?
- 20. Estrategia de grupo de conexión: bueno, malo o feo?
- 21. HTML 5 - Adopción temprana donde sea posible - ¿Bueno o malo?
- 22. iframe para la carga de anuncios bueno o malo?
- 23. ¿Apagar el modo de compatibilidad IE8, bueno o malo?
- 24. Métodos de extensión: IsNull e IsNotNull, ¿uso bueno o malo?
- 25. Varios cursores en bucles anidados en MySQL
- 26. Algo bueno y algo malo sobre SharePoint
- 27. Usar un semáforo en lugar del ciclo while. ¿Esto es bueno o malo?
- 28. Cassandra o mysql 5? ¿Cuál será bueno para el futuro?
- 29. Generación de IU de DB: ¿bueno, malo y feo?
- 30. ¿Por qué try {...} finalmente {...} es bueno; prueba {...} catch {} ¿malo?
Esto depende mucho de la alternativa que tenga. – Mchl
alternativas? Si está preguntando con respecto a la decisión sobre un tipo de base de datos diferente, entonces la respuesta es - ninguna ... :-( –
No. Alternativas como en 'si los cursores son demasiado lentos para usted, ¿qué otra cosa puede usar?'. Para Por ejemplo, podría obtener datos de la base de datos usando algún lenguaje de scripting, procesarlo allí y poner el paquete en la base de datos (si es necesario). Esto podría ser más rápido que un cursor, dependiendo de muchos factores. – Mchl