FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Muchas gracias Luis por tu ofrecimiento, muy amable. Lo que ocurre es que la tabla es propiedad de mi cliente que, aunque aún no me ha pagado, no estoy seguro de que le gustara la idea.
Puedo explicar un poco de qué va: Dado que se recoge un dato cada minuto esto supone una cantidad inmensa de datos. Se estudiaron varias posibilidades, tomar la media cada 5 minutos, cada 10, etc. pero al final se decidió tomar todos los datos y si luego sobraban mejor que si faltaban. He creado unos índices para luego agrupar los datos cada hora por ejemplo. La tabla tiene una columna que le llamo HORA_INT y que convierte la fecha y hora en un formato integer tal que así: Fecha: 01/01/2008 Hora: Entre 10:00 y 10:59 --> Columna HORA_INT= 2008010110 Fecha: 01/01/2008 Hora: Entre 11:00 y 11:59 --> Columna HORA_INT= 2008010111 etc. Esta columna tiene un índice. Con un campo calculado obtengo un dato "Rango de tiempo" que por ejemplo, HORA_INT=2008010110 lo convertiría en "De 10:00 a 10:59" Con un proceso similar, tengo varios índices: DIA_INT, SEMANA_INT, 5MINUTOS_INT, ETC. Así, si quiero un dato cada día por ejemplo, agrupo los datos por días obteniendo la media, el máximo y el mínimo. Fecha Rango de Tiempo Sensor Media Máximo Mínimo ------------------------------------------------------------- 01/01/2008 De 10:00 a 10:59 01 15.00 16.00 14.00 01/01/2008 De 11:00 a 11:59 01 16.00 16.00 14.00 01/01/2008 De 12:00 a 12:59 01 17.00 16.00 14.00 01/01/2008 De 13:00 a 13:59 01 18.00 16.00 14.00 etc. Con estos índices obtengo algo que yo entiendo como "razonablemente rápido". Una consulta en un rango de fechas de 3 meses, para 31 sensores, agrupados por hora, tarda algo menos de 2 minutos y devuelve 40.000 registros con los que elaboro un gráfico. Mi ordenador es un amd a 3000, mononúcleo con 2,5 GB de ram con win xp sp2. Para elaborar el gráfico me iría bien saber qué sensores no tienen ningún dato en el rango de fechas de la consulta. En fín, espero haberme expresado bien. Un saludo. |
#2
|
||||
|
||||
Con que componentes trabajas??? es que 2 ó 3 minutos en una consulta es un tiempo muy largo..... yo por ejemplo he llegado a tener (y se que no es tan alto como el volumen que maneja) clientes con tablas que superan los 2 millones y los resultados de velocidad son similares a cuando hay pocos datos...
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#3
|
|||
|
|||
Cita:
¿Qué componentes utilizas tú? Desde luego estoy muy interesado en la velocidad. |
#4
|
||||
|
||||
Pues yo utilizó unos que deben de correr más lento que los tuyos... los MDOLib ya que tiene mucho tiempo sin actualizar....
Descarga algún programa para analizar las consultas y mira que te dice, si de verdad está usando los indices que quieres... Yo uso uno llamado DataBase WorkBench, tiene una versión trial, con ella podrás mirar los análisis de las consultas.... y hay otros que te pueden servir...
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#5
|
||||
|
||||
Cita:
tambien opino que podrías utilizar una tabla "temporal" para vaciar los resultados de tu primer consulta y trabajar con esos datos. Espero que en algo te sea de ayuda. Saludos |
#6
|
|||
|
|||
Gracias boreg por tu ayuda.
Sin embargo, el problema es que lanzar una segunda consulta haría lento el proceso (la primera consulta tarda entre 1 y 2 minutos). Y lo de la tabla temporal tendría que recorrer todos los datos y también sería lento (en ocasiones, la consulta me devuelve varias decenas de miles de resultados). En realidad lo de la tabla temporal es algo que me llama la atención desde hace tiempo pero que no llego a utilizar bien del todo. A veces he usado la memorytable de las rxlib pero es muy lento porque hay que recorrer todos los datos de la consulta, no acepta un dataset como origen de datos. ¿Hay algún componente de tabla temporal que recoga los resultados de un dataset? Un saludo. |
#7
|
||||
|
||||
Resp
Pruba con algo asi. Y sando case o luego lansas la consulta sobre esta misma conculta o usando with. No tomen esta consulta a ala ligera hay varias consultas. pero se esta usando first 1 Aqui hay muchos beneficios.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#8
|
|||
|
|||
Gracias rastafarey.
Tu código tiene buena pinta. Ya lo pruebo a ver qué tal. Un saludo. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
como saber numero de registros de una tabla usando un clientdataset? | acl_gandalf | Conexión con bases de datos | 11 | 26-06-2023 19:09:19 |
Saber el número de registros llenos en un campo | mmmbopzombie | Tablas planas | 2 | 28-11-2005 09:54:31 |
Query, como saber el numero de Registros ? | Pascual Montes | Conexión con bases de datos | 5 | 09-12-2004 17:14:17 |
Saber cuantos registros origino la consulta | JorgeBec | SQL | 1 | 12-11-2004 16:48:17 |
Saber el numero de registros consultados | estudiante | SQL | 2 | 13-05-2003 00:12:09 |
|