Como puedo mejorar esta consulta...
Holas a todos, espero que puedan ayudarme con la siguiente consulta que la puse en DELPHI, solo que la busqueda como verán es muy lenta....demora muucho en encontrala...hasta tan solo escribir un nro se me demora en aparecer el el TEdit.
A continuacion les muestro el codigo que hice... Este codigo se encuentra en...
Como verán es un busqueda que realiza a medida que se escribe en un TEdit. Selecciono varios campos que necesito de una TablaInscripcion y realiza una suma de los montos recibido de otra tablaBeca, cuando sus IDE sean iguales. De toda esta informacion estoy realizando una busqueda de todos aquellos que cumplan la condicion INNER JOIN. Ahhhh!!! sino cologo el Group BY pues varios nombres se repetiran...cuantas veces hayan recibido el TOTALRECIBIDO. Solo que se me hace lenta... Alguna sugerencia.... gracias |
Discúlpame, pero la tuve que editar para que se pueda ver dentro del foro.
Mi pregunta al respecto es: ¿Verdaderamente quieres agrupar por TODOS esos campos?... Sin llegar a comprender el modelo de datos completos, ¿no pertenecen en forma distinta a un único registro de la misma tabla? Saludos! |
La consulta en si, no lo veo muy muy compleja que digamos, claro está que nos nos has comentado con que servidor de Base de datos trabajas :confused:, el problema que veo es que estas saturando la red abriendo y cerrando el DataSet(Q2) y peor aún que lo estas ejecutando dentro del evento OnChange del edit..:eek::eek:
Quizas se pueda ganar un poco de velocidad quitando la linea donde cierras(Close;) el DataSet.:rolleyes:...hummm...no lo sé..haber intentalo y nos comentas como te fué.;). Saludos...:) |
Hola!
Gracias por responder :) rgstuamigo: Estoy usando SQL Server 2000. Y quité la línea del (close), pero me sigue haciendo lenta la búsqueda. delphi.com.ar: Si necesito agruparlas para que me muestre un solo registro por cada estudiante. Disculpenme pero voy a explicar laaargo. Tengo dos tablas: DBinscripcion y BDbeca. Donde un inscrito recibe varias montos de dinero (Beca), cada mes. Durante un año recibe 12 veces un XXX monto y eso sucede por decir por 5 años. Pero pasado el tiempo este inscrito tiene que devolver la beca otorgada. Es decir, al finalizar los 5 años se tiene que realizar la suma Total de lo recibido, aqui se unen las dos tablas (Q2) donde de la tabla BDbeca saco el campo y sumo el TotalRecibido. Y si necesito esos campos para visualizar en DBEdits o en un DBGrid. Espero que puedan comprederme y ayudarme...Quizás pueda realizar otro tipo de búsqueda donde no sea tan lenta el resultado. OJO: Con esta consulta solo me devuelve o se me visualizan los resultados de aquellos que "recibieron" la beca. (IdE=IdE) inner join Graaacias. |
Estoy de acuerdo con rgstuamigo.
Quita la función del evento OnChange, y modifica para que se ejecute al pulsar un botón o intro por ejemplo en el mismo campo. Ya nos contarás. Un saludo |
Cita:
|
Hola!
Cita:
Tuve que cambiar al hace un Click en un boton, para realizar la búsqueda. Graaacias! |
Agrega un ínidice para el campo "idE" en cada una de las tablas imbolucradas en la consulta. También prueba agregando otro índice para cada uno de los campos en donde haces las búsqueda de texto completo.
Saludos, Chris |
La franja horaria es GMT +2. Ahora son las 04:09:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi