Ver Mensaje Individual
  #25  
Antiguo 11-12-2019
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Reputación: 14
novato_erick Va por buen camino
Cita:
Empezado por lbuelvas Ver Mensaje
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
Responder Con Cita