FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda para abrir tabla...
Buen dia amigos, estoy usando Sql 2000,ado y delphi 7, tengo que hacer una consulta del padron, la cual desde que intento abrirla tarda mucho tiempo, son como 5.5 millones de registro, me dice que el tiempo expiro y aveces da otro error, que no lo tengo a mano ahora, pero cualquier persona que ha pasado por esto fovor de darme una mano.
Nota: desde el mismo sql si puedo abrir la tabla y realizar query, pero desde el delphi no que raro.
__________________
ronimaxh Rep. Dominicana |
#2
|
||||
|
||||
Hola, quizá si pusieras el código que usas para abrir la tabla, facilitaria las cosas.
Así a primera vista, lo único que se me ocurre preguntarte es: ¿realizas algún filtro al abrir la tabla?, es decir, ¿escoges varios campos y usas where e índices o hay un : SELECT * FROM ...? Saludos |
#3
|
||||
|
||||
En una tabla con ese número de registros yo pondría como condición indispensable un Filtro y para curarme en salud un TOP.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
|||
|
|||
gracias por responder depronto, aqui está una muestra del código,disculpen por lo de la etiqueta es que no se como ponerla.
select * from vw_padron where apellido1 like '%garcia%' and apellido2 like '%rodriguez%' luego esto tarda mucho y luego dice que el tiempo expiro, luego lo intente abriendo la tabla directamente sin filtro y me dijo lo mismo select * from padron esto es un ejemplo por que aqui no tengo el delphi. Nota: Esta tabla tiene como cuarenta columnas eso tiene que ver, pero lo cierto es que me permite conectarme a la db, y cuando intento hasta desde un adotable no me abre me dice el mismo error.
__________________
ronimaxh Rep. Dominicana |
#5
|
||||
|
||||
Revisa cómo poner TAG's en los mensajes para código, SQL,...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
||||
|
||||
Está claro el problema.
Primero usas el * para recuperar las 40 columnas, deberías intentar filtrar las columnas necesarias. La condición que has puesto es un like, mejor dicho, dos likes, lo cual lo relentiza muchísimo. Cita:
Ahora se me ocurre algo, pero no se si será una tontería: prueba algo así:
Se trata de juntar los dos likes en uno, sólo tendrías un campo donde filtrar. Quizá pueda ser más rápido, pero recuerda en reducir el número de campos a recuperar. Eso es crucial. Saludos |
#7
|
||||
|
||||
El problema es que la tabla es muy grande (en número de registros y en columnas), los campos por los que estás filtrando, posiblemente no son campos clave, tal vez no tengan índices, el operador LIKE es muy lento y además no estás haciendo ningun TOP.
Esa consulta tiene pinta de tardar mucho. Dos opciones: (1) O cambias la consulta para que tarde menos. (2) O Cambias el TimeOut de la conexion/Query ADO y te vas a tomar un café mientras salen los resultados.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#8
|
|||
|
|||
Podrías crear un índice por apellido1 y apellido2 si no los tienen. Esto de todas maneras no te valdrá de nada si usas LIKE '%garcia%', deberías usar sólo el % final, LIKE 'garcia%'. Creo que en este caso el resultado sería el mismo, y acelerarías mucho la consulta, eso sí, los índices tendrías que tenerlos igualmente.
|
#9
|
|||
|
|||
gracias amigos por contestar neftali lo que dices es cierto esa es mi situacion, no entienedo eso de los top, favor de explicarmelo.
__________________
ronimaxh Rep. Dominicana |
#10
|
||||
|
||||
Un TOP sirve para realizar una consulta, pero obtener sólo los n primeros registros.
Depende de lo que necesites el tiempo será muy pequeño; El problema es que el TOP te da como máximo los 100 registros y no más. Ahora se me está ocurriendo que podría hacer un TOP para obtener 100. Consulta: Supongamos que obtienes: campo1 Campo2 Campo3 1 aaaaa 1234 2 bbbbb 9999 ... 100 ccccc 878787 Para obtener los siguientes podrías hacer (fijándote en el último obtenido):
Obtendrías los 100 siguientes... 101 aaaaa 1234 102 bbbbb 9999 ... 200 ccccc 878787 Para los siguientes:
Y así sucesivamente. Lo importante es que tengas un campo Clave por el que puedas ordenar. En el ejemplo he usado 1..100, 101..200,... pero serviría cualquier campo clave.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 31-01-2007 a las 19:30:36. |
#11
|
|||
|
|||
gracias amigo ya lo tengo.
__________________
ronimaxh Rep. Dominicana |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
hay alguna utilería para abrir Quick Reports para una posterior impresión? | akela | Impresión | 3 | 30-01-2006 21:40:42 |
necesito ayuda para pasar registros a otra tabla | ddd_ddd | Conexión con bases de datos | 2 | 09-09-2005 20:33:41 |
Ayuda con una tabla de configuracion para boton visibles | josevaldez | Conexión con bases de datos | 1 | 14-07-2005 17:47:14 |
ayuda para enlazar con otra tabla | Debian | Conexión con bases de datos | 1 | 24-03-2005 16:48:28 |
Ayuda Para Abrir Una Tabla Access | nahuel_ac | Tablas planas | 2 | 22-11-2004 22:06:18 |
|