![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como optimizar sql
buenas tardes:
como puedo optimizar esta consulta. se tarda muchisimo ya que ocupo demaciados registros.
|
#2
|
||||
|
||||
Que exactamente es
Cita:
__________________
El malabarista. |
#3
|
||||
|
||||
Cita:
Doctor, ¿qué puedo hacer para que a mi hijo no le duela? Ahora, imagina qué te contestará el doctor. Pues lo mismo.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
|||
|
|||
Gracias por sus tips para plantear el tema:
resulta que tengo una tablaDB similar a esta: Dato1 dato2 dato3 dato4 1 59 dsfg sdfg 2 60 sdfg sdfg 3 61 dsfg sdfg 4 62 dsfg sdfg 8 66 sdfg sdfg 9 67 dsfg sdfg 10 68 dsfg sdfg 11 69 sdfg sdfg y obtengo el registro de en medio: Dato1 dato2 dato3 dato4 " " 64 dsfg sdfg sin el Dato1. normalmente lo que haría alguien normal es recorrer tupla por tupla, pero yo en lugar de eso, uso el dato2, y busco el máximo menor en la BD, ademas, busco el máximo de dato1. de este modo, obtengo los datos: Dato1 dato2 4 62 después le resto el dato2 actual con el dato2 de la BD y obtengo la cantidad de espacios entre ellos, así pues, uso el dato1 de la BD y le sumo el resultado de la resta, para obtener el numero 6 que debo insertar en la BD con los datos completos. asi mi registro completo queda de la siguiente manera: Dato1 dato2 dato3 dato4 6 64 dsfg sdfg y mi tabla queda un poco mas completa: Dato1 dato2 dato3 dato4 1 59 dsfg sdfg 2 60 sdfg sdfg 3 61 dsfg sdfg 4 62 dsfg sdfg 6 64 dsfg sdfg 8 66 sdfg sdfg 9 67 dsfg sdfg 10 68 dsfg sdfg 11 69 sdfg sdfg lo que quiero es optimizar la consulta, ya que tengo mas de 600 mil registros, y se tarda un poco esta consulta. una disculpa por no colocar todo en tabla. |
#5
|
||||
|
||||
No lo entiendo.
De dónde sacas esto, si no existe: " " 64 dsfg sdfg
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#6
|
||||
|
||||
Hola.
Cita:
¿ Y no te arroja ningún error así como está ? Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
|||
|
|||
Mira, lo que pasa es no es que no se tenga, lo que pasa es que en su momento no se actualizo, por errores de conexión, sin embargo los datos si existen, solo quiero sacar el campo 1 al que le pertenece, como un ID
|
#8
|
|||
|
|||
Cita:
no, no genera error, actualmente esta funcionando: mira este es el código tal cual:
|
#9
|
||||
|
||||
Cita:
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
¿Motor de base de datos? ¿Local, remota, web? ¿LAN, WAN, Internet?
De entrada, un subselect como el que me imagino tienes en la segunda línea SI ESTÁ PERFECTAMENTE PARAMETRIZADO no tarda mucho. No es lo mismo seleccionar una pelirroja con vestido blanco en una calle de Edimburgo que una pelirroja con vestido... (Perdón por el ejemplo)
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively... "Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum. Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco Última edición por TiammatMX fecha: 16-08-2018 a las 20:05:44. Razón: Error ortográfico |
#11
|
|||
|
|||
Este pedazo del código sería terrible (por lo menos en mysql)
MAX es genial en ciertos casos, porque el manejador de bb dd simplemente busca el ultimo registro del indice para esa columna, ni siquiera baja a disco (los indices están en ram), pero en el WHERE refieres al mismo campo (CAMPO 2) por lo que hay que recorrer el indice Mi sugerencia es que pruebes un indice campo2, campo3, campo4 (siempre campo2 primero) y mides si ese subquery mejora Yo de hecho cambiaría un poco la consulta (cosas de MySQL) Código:
SELECT campo2 FROM tabla1 WHERE campo3=1 AND campo4= 'texto' AND campo2<6584651 ORDER BY campo2, campo3, campo4 DESC LIMIT 1
Esto si es un dolor de cabeza, siempre termina por crear una tabla temporal y luego ordenarla. No importa lo que mejores el subquery (por cierto no entiendo la función del subquery) Lo seguiré pensando, pero realmente no veo forma de optimizar ese query. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como optimizar la conversion de hexadecimales a enteros decimales | REVINFOR | Varios | 12 | 18-10-2014 23:57:48 |
Ayuda como Optimizar Código | JerS | OOP | 3 | 24-06-2011 05:59:44 |
¿como optimizar rendimiento y tamaño base de datos firebird 2.5? | JXJ | Firebird e Interbase | 4 | 22-11-2010 02:51:45 |
Optimizar clientDataSet | Kenobi | Varios | 2 | 07-07-2010 22:20:46 |
Como optimizar la operación Last | marcoszorrilla | Trucos | 0 | 29-06-2006 22:37:06 |
![]() |
|