FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Quiero liberar my query para usar el mismo varias veces
Hola Chicos muchas gracias por leer esta duda.. necesito que me hechen una mano .. resulta que tengo un programa que realiza un monton (pero de verdad un monton) de consultas mysql por lo que al principio re-usar los querys de alguna manera "limpiarlos" antes de volver a usarlos pero me marcaba errores con referencia a parametros antes usados.. por lo que mi solucion mas viable fue hacer uno para cada busqueda.. Despues de eso no tuve ningun problemas porque trabajaba localmente.. pero ahora el problema es que al usarlo en forma no local el programa se hace lentisiimo y no se si sea por la cantidad de querys que tengo en el programa.. miren asi es como los uso:
en un foro anterior me dijeron que agregara esta linea:
primero me dijeron que la pusiera aqui:
pero me marca un error me dice: parametro 'mat' no encontrado entonces alguien mas me sugirio que pusiera la linea aqui:
pero me arroja el error incial el que me dice de que no encuentra algun parametro que anteriormente use en el query anterior. Por favor si a alguien se le ocurre algo o que encuentre el error que no logro visualizar de verdad se lo agradeceria, ya que el programa ya esta terminado pero el cliente no lo quiere por la lentitud. Última edición por zcatzz fecha: 24-01-2007 a las 00:56:02. |
#2
|
||||
|
||||
Una gran solución es el uso de procedimientos almacenados en mysql. Que Ojo con delphi yo no he conseguido ejecutarlos, unicamente lo he conseguido en mis proyectos de php. Pero en un post AzidRain mencionaba que era posible, desgraciadamente no posteó la manera que era posible invocar los Sps desde delphi.
__________________
Conoce mi blog http://www.edgartec.com |
#3
|
||||
|
||||
No olvides que el metodo Clear lo que hace no es borrar el contenido del parametro sino borrar completamente los parametros
Como vemos en el código, Delphi se encarga de borrar y añadir los parametros que vamos creando con las sentencias SQL. Así vemos que en el ejemplo la primera sentencia usa "mat" como parametro y la seguna "municipio". En el primer caso delphi crea en automático "mat", al meterle la segunda sentencia crea "municipio". Con la sentencia "Clear" delphi borra ademas de la sentencia los parametros que se crearon. Los parametros los puedes usar tambien en sentencias INSERT, DELETE o UPDATE en la misma forma, solo que en esos casos no se usa "Open" sino "ExecSQL" para ejecutar el query ya que estas sentencias no devuelven datos. Sobre los procedimientos almacenados Zeos incluye un control especial para eso "TStoredProc" , ademaás de que se de pueden llamar or medio del control "TSQLScript" de Zeos.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#4
|
||||
|
||||
pero sigue siendo la misma instruccion
aqui en este ejemplo que me estas dando el query es el mismo con la misma instruccion pero diferente parametro, lo que yo quiero hacer es limpiar completamente todo lo de ese query y usarlo nuevamente con otra instruccion y otros parametros.. eso no lo puedo hacer? , porque necesito hacer menos cantidad de querys para ver si asi el programa se libera un poco y se hace mas rapido...
Cn tu respuesta (que agradezco de antemano) me siguen saliendo los mismos errores. |
#5
|
||||
|
||||
Si bien puede afectar, no estaría yo tan seguro de que la lentitud del programa se deba a la cantidad de componentes query. Por el ejemplo de la consulta que pones veo que utilizas muchos joins. Asegúrate de tener bien definidos todos tus índices. Creeme que la diferencia entre tener y ne otener índices es monumental en cuestión de tiempo.
// Saludos |
#6
|
||||
|
||||
Estoy de acuerdo con Roman, la velocidad de los Querys no tiene nada que ver con la cantidad de componentes que uses para correrlos. Puedes tener 5 objetos para cada query o uno solo y reutilizarlo pero si tus consultas no estan optimizadas obtendrás la misma lentitud en uno y otro esquema.
Lo unico que consigues al reutilizar un mismo query es un mejor uso de la memoria pero realmente esto no es un gran factor como para afectar el rendimiento del mismo. Te recomiendo que te cheques "MySQL CookBook" que trae muchisimas "recetas" para hacer querys segun el tipo de necesidad que tengas además te explica como optimizar los querys. Aunque es para MySQL la mayoría de los querys los puedes usar en otros motores.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿liberar memoria despues de usar una Query? | mrmanuel | Conexión con bases de datos | 25 | 01-11-2006 14:20:14 |
FreeReport-Imprimir dos veces el mismo reporte | MeArevalo | Impresión | 1 | 05-11-2004 20:34:00 |
Abrir varias veces el mismo form | Phacko | Varios | 7 | 25-09-2004 05:22:01 |
Imprimir algo varias veces. | aoiTo | Impresión | 0 | 20-07-2004 19:12:49 |
Obtener dos veces el mismo campo. | Jose_Pérez | SQL | 11 | 27-02-2004 05:51:06 |
|