tablas recomendaciones porque para optimización lenta las grandes dañan datos cuello consultas cantidades botella bases database performance for-loop

database - recomendaciones - ¿Cuál es más caro? Para bucle o llamada a la base de datos?



porque se dañan las tablas en mysql (7)

Con solo tomar una foto: las llamadas a DB probablemente serán más caras. Al menos esto es lo que experimenté hasta ahora ...

En general, ¿cuál es más caro? ¿Un bucle For anidado doble y una llamada a una base de datos o una llamada a una base de datos para cada uno de N elementos en solo un bucle for?

No busco una respuesta hasta microsegundos, solo una idea general de qué dirección debo tomar.

TIA.


Creo que depende de lo que estás haciendo. No hay suficiente información en su declaración.

Las respuestas anteriores son verdaderas, cuanto menos accedas a la base de datos, mejor (generalmente). Por lo tanto, debe intentar realizar una operación específica en la menor cantidad posible de llamadas a la base de datos. La única excepción a esto, yo diría, sería en casos donde su aplicación es más rápida que la base de datos, quizás al hacer transformaciones de datos complejas, o al usar una base de datos muy ineficiente.

Por lo general, dejar que la base de datos realice transformaciones de datos en forma establecida suele ser más rápido que hacerlo programáticamente usando un cursor en un bucle for. Si esto no es algo que esté familiarizado, sugiero aprender un poco más de SQL o obtener un buen libro de instrucciones como SQL Cookbook (nota: no estoy afiliado a O''Reilly, ese libro fue extremadamente útil para yo.)


En general, cualquier cosa que se haga en la memoria (para el bucle) es más rápido que lo que se hace en una red (llamada a la base de datos). Sin embargo:

for i = 1 to num_users get user from database end

será más lento que

get users 1 to num_users from database (in one query)

porque es la cantidad de veces que preguntas a la base de datos por algo que realmente importa.


En general, cuantas menos veces llegue a la base de datos, mejor. Hay varias razones para esto, que incluyen:

  • La base de datos podrá optimizar mejor si puede tratar de recuperar todo a la vez
  • Elimina toda la sobrecarga de comunicarse con la base de datos varias veces, lo que puede ser bastante significativo

En general, cuanto menos accedas a la base de datos, mejor.


Esto depende en gran medida.

Un bucle anidado será mucho más rápido que una llamada a la base de datos si solo tiene unos pocos cientos de elementos. Una llamada a la base de datos involucraba generalmente una transmisión de datos a través de LAN o algo peor, internet. la consulta debe analizarse cada vez y así sucesivamente.

Pero si tiene miles o millones de elementos que se buscan en una consulta de base de datos, la consulta SQL será mucho más rápida, ya que los sistemas de bases de datos están altamente optimizados para manejar grandes cantidades de datos. Pero no olvides crear índices para tus tablas.

En caso de duda, debe medir el tiempo que le toma a cada método, y si solo le da una mejor idea de cómo se comporta el rendimiento.


Si va a procesar cada elemento, solo haga una llamada a menos que use una cantidad escandalosa de memoria.