![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#13
|
|||
|
|||
|
Antes de empezar con el rollo...... AGAG4, te he editado el mensaje para poner la etiqueta [ sql ] (sin espacios). Mírate el funcionamiento de ésta y otras leyendo el primer mensaje del cualquier foro.
Ahora, al grano: Veamos, lo que el amigo AGAG4 quiere, si no he entendido mal, es lo siguiente: Como vemos, se lanzan muuuchas subselect, por lo que, por mucho que diga el amigo Marc de poner/crear los índices adecuados ( ), siento no estar de acuerdo con él. Quiera o no, esta multitud de subselect se vuelve muy lento. Además hay que tener presente que alguna de estas consultas (si TOPE no es índice o Unique) puede devolver más de 1 fila, por lo que habría que poner la cláusula distinct y esto aun lo haría más lento.Quizás con tablas pequeñas la diferencia sea poca, pero con tablas con muchos datos...... He realizado mis pruebas contra una tabla de más de 250 mil de registros en DB400 (DB2 para AS400) con las sentencias siguientes sentencias SQL SQL1 SQL2 SQL3 Con los siguientes resultados: SQL1: 1:57.213 SQL2: 0:07.411 SQL3: 0:10.175 Como véis, en el SQL1 he tenido que poner un distinct ya que esa subconsulta me devolvía más de un resultado. Por otro lado, también es cierto que con SQL1 tenemos exactamente lo que queremos, pero con un gran coste. Quizás mejor programar 4 lineas de código y reducir el coste de la consulta de forma drástica. Creo que hay una clara diferencia entre la cantidad de subselects y los demás métodos, siendo el más rápido el propuesto por el amigo scooterjgm. Lo que no he probado es lo del procedimiento almacenado, pero supongo que los tiempos serán por el estilo al SQL2 y SQL3 Pues nada, estas han sido las pruebas Espero que os sean de utilidad |
|
|
|