Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Optimizando Consulta (https://www.clubdelphi.com/foros/showthread.php?t=94308)

lbuelvas 23-11-2019 17:51:20

Hola, puedes subirlo a mi servidor

http://45.77.164.42/HFS_Publica/

Se pueden subir archivos y bajarlos, pero no borrarlos, me avisas cuando lo puedo borrar.

novato_erick 23-11-2019 18:25:20

Compañeros dejo el enlace para descarga:

https://drive.google.com/open?id=1uv...1_ATD9mOXaQ-1I

Saludos;

novato_erick

novato_erick 23-11-2019 18:27:47

Cita:

Empezado por lbuelvas (Mensaje 534558)
Hola, puedes subirlo a mi servidor

Hola Ivuelvas:

Deje en enlace y tambien lo subi a tu servidor.

Saludos y muchas gracias por tu colaboración;


novato_erick.

pd: el que administre este foro no estaría interesado que colaboremos en un servidor para este tipo de situaciones de subir info a los miembros?

lbuelvas 25-11-2019 08:37:33

Estuve revisando tus metadatos y encuentro que no tienes llaves foráneas, entonces suspendí la revisión. Regálanos por favor una base de datos donde recortes lo que no estés interesado en que nosotros veamos y una porción de registros. Luego de recortar lo que es dispensable, haces Backup/Rrestore para disminuir el tamaño del archivo, lo comprimes y lo envías.

Lo otro que podemos hacer es hacer una sesión remota, yo tengo licencia de Ammyy y hablamos por Telegram o Whatsapp porque veo que tu base de datos tiene muchos registros.

Como estás en Panamá tenemos el mismo horario, yo estuve por allá hace unos 15 días en un Crucero por el Caribe que nos ganamos mi esposa y yo, estuvimos medio día por allá, es muy bonito.

novato_erick 11-12-2019 22:05:38

Cita:

Empezado por lbuelvas (Mensaje 534579)
Como estás en Panamá tenemos el mismo horario, yo estuve por allá hace unos 15 días en un Crucero por el Caribe que nos ganamos mi esposa y yo, estuvimos medio día por allá, es muy bonito.

lBuelvas. Si Panamá es muy Bonito para mi cada país tiene sus atractivo he ido a Colombia y me parece espectacular depende de las perspectiva y las mujeres bellas.

En referencia a las Llaves foráneas cuando tomé el proyecto también noté lo mismo en la Tabla FACTURAS_VENTAS con sus tablas hijas o dependiente en fin a pesar de no poseer dicha llave foraneas no ha perdido integridad en cuanto a las transacciones a cada tabla.

Casi son dos millones de registros.

en Fin realizé una recreación de los indixes de todas las tablas leyendo un poco este link https://firebird21.wordpress.com/tag/reindex/ la cual al ejecutarlo se corrigió el problema de consulta también cree un nuevo campo la cual guarda solamente el tipo de dato de FECHA sin la hora para evitar usar la función cast de Firebird en la consulta y tenias razón si mejoró notablemente.

También el consejo de:

Cita:

mamcx
(Todos los join era nested loops, que asco!) y aun asi, termine reescribiendo el query mejor.
Definiitva mamcx no reescribí pero tan solo quitando la clausula order by y la función DESCENDING fue notable ejemplo:
Código SQL [-]

ORDER BY FAC_CLIENTE.ID_FACTURA DESCENDING  --quite aquí


Antes de quitar la función DESCENDING

Código:

Query Performance
------------------------------------------------
Prepare      : 16 ms
Execute      : 0 ms
Avg fetch time: 0 ms

Memory Usage
------------------------------------------------
Current: 98.30 MB
Max    : 98.35 MB
Buffers: 2048

Database Operations
------------------------------------------------
Reads  : 10167
Writes : 0
Fetches: 6145639

Plan:
------------------------------------------------
PLAN SORT (JOIN (FACTURAS_VENTAS NATURAL, FAC_CLIENTE INDEX (IDX_FAC_CLIENTE), CLIENTES INDEX (RDB$PRIMARY85), FAC_CAJA INDEX (IDX_FAC_CAJA), CAJAS INDEX (RDB$PRIMARY77)))

Table Operations:
+--------------------------+-----------+-----------+-----------+-----------+-----------+
|        Table Name        |  Index  | Non-Index |  Updates  |  Deletes  |  Inserts  |
|                          |  reads  |  reads  |          |          |          |
+--------------------------+-----------+-----------+-----------+-----------+-----------+
|          FACTURAS_VENTAS|        0 | 1,329,368 |        0 |        0 |        0 |
|                  FAC_CAJA|  182,404 |        0 |        0 |        0 |        0 |
|              FAC_CLIENTE|  182,404 |        0 |        0 |        0 |        0 |
|                    CAJAS|  182,404 |        0 |        0 |        0 |        0 |
|                  CLIENTES|  182,404 |        0 |        0 |        0 |        0 |
+--------------------------+-----------+-----------+-----------+-----------+-----------+


Quitando la función DESCENDING

Código:

Query Performance
------------------------------------------------
Prepare      : 0 ms
Execute      : 0 ms
Avg fetch time: 0 ms

Memory Usage
------------------------------------------------
Current: 33.32 MB
Max    : 98.35 MB
Buffers: 2048

Database Operations
------------------------------------------------
Reads  : 8725
Writes : 0
Fetches: 2316311

Plan:
------------------------------------------------
PLAN JOIN (FACTURAS_VENTAS NATURAL, FAC_CLIENTE INDEX (IDX_FAC_CLIENTE), CLIENTES INDEX (RDB$PRIMARY85), FAC_CAJA INDEX (IDX_FAC_CAJA), CAJAS INDEX (RDB$PRIMARY77))

Table Operations:
+--------------------------+-----------+-----------+-----------+-----------+-----------+
|        Table Name        |  Index  | Non-Index |  Updates  |  Deletes  |  Inserts  |
|                          |  reads  |  reads  |          |          |          |
+--------------------------+-----------+-----------+-----------+-----------+-----------+
|          FACTURAS_VENTAS|        0 | 1,147,164 |        0 |        0 |        0 |
|                  FAC_CAJA|      200 |        0 |        0 |        0 |        0 |
|              FAC_CLIENTE|      200 |        0 |        0 |        0 |        0 |
|                    CAJAS|      200 |        0 |        0 |        0 |        0 |
|                  CLIENTES|      200 |        0 |        0 |        0 |        0 |
+--------------------------+-----------+-----------+-----------+-----------+-----------+

Sus aportes son significativo y en resumen:
- recrear los indice ya que en la db habia 160 mil registros de diferencia entre mi tabla de desarrollo y la tabla de producción sin indexar eso también jugó un papel importante así que significativamente la recreación de los indice debe de realizarse cada cierto tiempo en fin no encontré por el momento alguna sugerencia en ese tema.

- usar la función Cast de firebird para convertir la fecha si afecta algo en el rendimiento de la consulta Mejor utilizar el tipo de Dato correspondiente a sólo Fecha

- El uso de las funciones hay que saber cuando hay que usarla en caso de consultas de búsquedas de mucha cantidad de registros. Esto juega un papel importante (Tener bien claro cada consulta).


Doy solucionado dejaré terminado este tema.

Saludos y Bendiciones a todos;


novato_erick

mamcx 12-12-2019 01:27:14

Cita:

Empezado por novato_erick (Mensaje 534755)
recreación de los indice debe de realizarse cada cierto tiempo en fin no encontré por el momento alguna sugerencia en ese tema.

Solo es recrea si hay una inserción masiva (quizás, solo si es realmente grande y trastea enormente con los datos, triggers, etc. No es tan necesario si los registros son un "APPEND") . De resto es innecesario.

novato_erick 13-12-2019 06:02:55

Cita:

mancx:
Solo es recrea si hay una inserción masiva (quizás, solo si es realmente grande y trastea enormente con los datos, triggers, etc. No es tan necesario si los registros son un "APPEND") . De resto es innecesario.


^\||/ Gracias.

Saludos;

novato_erick


La franja horaria es GMT +2. Ahora son las 21:15:39.

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