Showing form - too slow

mariluzrm

Member
Hello!!

I'm showing a form (it is a form with 9 tabs (9 groups)), but it takes 10-20 seconds to load ...

Appending &fabrikdebug=1 to the list URL, in

Section: form:render:

Code:
SELECT  DISTINCT `estruct`.`ORDINVPR` AS `estruct___ORDINVPR`,
`estruct`.`ORDINVPR` AS `estruct___ORDINVPR_raw`,
`estruct`.`IDPROV` AS `estruct___IDPROV_raw`,
`provinc`.`PROVINC` AS `estruct___IDPROV`,
`estruct`.`IDESTR` AS `estruct___IDESTR`,
`estruct`.`IDESTR` AS `estruct___IDESTR_raw`,
`estruct`.`UTMX` AS `estruct___UTMX`,
`estruct`.`UTMX` AS `estruct___UTMX_raw`,
`estruct`.`UTMY` AS `estruct___UTMY`,
`estruct`.`UTMY` AS `estruct___UTMY_raw`,
`estruct`.`COTA` AS `estruct___COTA`,
`estruct`.`COTA` AS `estruct___COTA_raw`,
`estruct`.`FECHACO` AS `estruct___FECHACO`,
`estruct`.`FECHACO` AS `estruct___FECHACO_raw`,
`invent`.`IDINV` AS `invent___IDINV`,
 `invent`.`IDINV` AS `invent___IDINV_raw`,
 `invent`.`DENOMIN` AS `invent___DENOMIN`,
 `invent`.`DENOMIN` AS `invent___DENOMIN_raw`,
 `invent`.`FECHA_MOD` AS `invent___FECHA_MOD`,
 `invent`.`FECHA_MOD` AS `invent___FECHA_MOD_raw`,
 `invent`.`CAMBIOS` AS `invent___CAMBIOS`,
 `invent`.`CAMBIOS` AS `invent___CAMBIOS_raw`,
 `invent`.`HIPER_IS` AS `invent___HIPER_IS`,
 `invent`.`HIPER_IS` AS `invent___HIPER_IS_raw`,
 `invent`.`METODO_C` AS `invent___METODO_C`,
 `invent`.`METODO_C` AS `invent___METODO_C_raw`,
 `invent`.`M_OTROS` AS `invent___M_OTROS`,
 `invent`.`M_OTROS` AS `invent___M_OTROS_raw`,
 `invent`.`CIRCULAC` AS `invent___CIRCULAC`,
 `invent`.`CIRCULAC` AS `invent___CIRCULAC_raw`,
 `invent`.`OBSTACUL` AS `invent___OBSTACUL`,
 `invent`.`OBSTACUL` AS `invent___OBSTACUL_raw`,
 `invent`.`OBSERVAC` AS `invent___OBSERVAC`,
 `invent`.`OBSERVAC` AS `invent___OBSERVAC_raw`,
 `invent`.`OTROS_CO` AS `invent___OTROS_CO`,
 `invent`.`OTROS_CO` AS `invent___OTROS_CO_raw`,
 `invent`.`CORTE_DE` AS `invent___CORTE_DE`,
 `invent`.`CORTE_DE` AS `invent___CORTE_DE_raw`,
 `invent`.`OBSERVA2` AS `invent___OBSERVA2`,
 `invent`.`OBSERVA2` AS `invent___OBSERVA2_raw`,
 `invent`.`IDESTR` AS `invent___IDESTR`,
 `invent`.`IDESTR` AS `invent___IDESTR_raw`,
 `invent`.`TXT_TRAF` AS `invent___TXT_TRAF`,
 `invent`.`TXT_TRAF` AS `invent___TXT_TRAF_raw`,
 `invent`.`TXT_FERR` AS `invent___TXT_FERR`,
 `invent`.`TXT_FERR` AS `invent___TXT_FERR_raw`,
 `invent`.`TXT_PEAT` AS `invent___TXT_PEAT`,
 `invent`.`TXT_PEAT` AS `invent___TXT_PEAT_raw`,
 `invent`.`TXT_BICI` AS `invent___TXT_BICI`,
 `invent`.`TXT_BICI` AS `invent___TXT_BICI_raw`,
 `invent`.`TXT_TRAF2` AS `invent___TXT_TRAF2`,
 `invent`.`TXT_TRAF2` AS `invent___TXT_TRAF2_raw`,
 `invent`.`TXT_FERR2` AS `invent___TXT_FERR2`,
 `invent`.`TXT_FERR2` AS `invent___TXT_FERR2_raw`,
 `invent`.`TXT_PEAT2` AS `invent___TXT_PEAT2`,
 `invent`.`TXT_PEAT2` AS `invent___TXT_PEAT2_raw`,
 `invent`.`TXT_BICI2` AS `invent___TXT_BICI2`,
 `invent`.`TXT_BICI2` AS `invent___TXT_BICI2_raw`,
 `invent`.`TXT_CAUC2` AS `invent___TXT_CAUC2`,
 `invent`.`TXT_CAUC2` AS `invent___TXT_CAUC2_raw`,
 `invent`.`TXT_TERR2` AS `invent___TXT_TERR2`,
 `invent`.`TXT_TERR2` AS `invent___TXT_TERR2_raw`,
 `invent`.`TXT_OTRO` AS `invent___TXT_OTRO`,
 `invent`.`TXT_OTRO` AS `invent___TXT_OTRO_raw`,
 `invent`.`TXT_OTRO2` AS `invent___TXT_OTRO2`,
 `invent`.`TXT_OTRO2` AS `invent___TXT_OTRO2_raw`,
 `invent`.`IDGRPENE` AS `invent___IDGRPENE`,
 `invent`.`IDGRPENE` AS `invent___IDGRPENE_raw`,
 `invent`.`TXTCONIN` AS `invent___TXTCONIN`,
 `invent`.`TXTCONIN` AS `invent___TXTCONIN_raw`,
 `invent`.`IDMOT` AS `invent___IDMOT`,
 `invent`.`IDMOT` AS `invent___IDMOT_raw`,
 `invent`.`OBSMOT` AS `invent___OBSMOT`,
 `invent`.`OBSMOT` AS `invent___OBSMOT_raw`,
 `invent`.`MEDIOS` AS `invent___MEDIOS`,
 `invent`.`MEDIOS` AS `invent___MEDIOS_raw`,
 `invent`.`ACCESO` AS `invent___ACCESO`,
 `invent`.`ACCESO` AS `invent___ACCESO_raw`,
 `invent`.`OBSOMOT` AS `invent___OBSOMOT`,
 `invent`.`OBSOMOT` AS `invent___OBSOMOT_raw`,
 `invent`.`MODIFIC` AS `invent___MODIFIC`,
 `invent`.`MODIFIC` AS `invent___MODIFIC_raw`,
 `invent`.`CLASE_ES` AS `invent___CLASE_ES`,
 `invent`.`CLASE_ES` AS `invent___CLASE_ES_raw`,
 `invent`.`TIP_ORIG` AS `invent___TIP_ORIG`,
 `invent`.`TIP_ORIG` AS `invent___TIP_ORIG_raw`,
 `invent`.`TIP_ENSA` AS `invent___TIP_ENSA`,
 `invent`.`TIP_ENSA` AS `invent___TIP_ENSA_raw`,
 `invent`.`MAT_ORIG` AS `invent___MAT_ORIG`,
 `invent`.`MAT_ORIG` AS `invent___MAT_ORIG_raw`,
 `invent`.`MAT_ENS` AS `invent___MAT_ENS`,
 `invent`.`MAT_ENS` AS `invent___MAT_ENS_raw`,
 `invent`.`LONGITUD` AS `invent___LONGITUD`,
 `invent`.`LONGITUD` AS `invent___LONGITUD_raw`,
 `invent`.`LUZ_MAX` AS `invent___LUZ_MAX`,
 `invent`.`LUZ_MAX` AS `invent___LUZ_MAX_raw`,
 `invent`.`LUZ_MIN` AS `invent___LUZ_MIN`,
 `invent`.`LUZ_MIN` AS `invent___LUZ_MIN_raw`,
 `invent`.`ANCH_MED` AS `invent___ANCH_MED`,
 `invent`.`ANCH_MED` AS `invent___ANCH_MED_raw`,
 `invent`.`ALTO_PIL` AS `invent___ALTO_PIL`,
 `invent`.`ALTO_PIL` AS `invent___ALTO_PIL_raw`,
 `invent`.`ALTO_EST` AS `invent___ALTO_EST`,
 `invent`.`ALTO_EST` AS `invent___ALTO_EST_raw`,
 `invent`.`PLANTA` AS `invent___PLANTA`,
 `invent`.`PLANTA` AS `invent___PLANTA_raw`,
 `invent`.`CEDIDO` AS `invent___CEDIDO`,
 `invent`.`CEDIDO` AS `invent___CEDIDO_raw`,
 `invent`.`SERVICIO` AS `invent___SERVICIO`,
 `invent`.`SERVICIO` AS `invent___SERVICIO_raw`,
 `invent`.`CONCESIO` AS `invent___CONCESIO`,
 `invent`.`CONCESIO` AS `invent___CONCESIO_raw`,
 `invent`.`DEMOLIDO` AS `invent___DEMOLIDO`,
 `invent`.`DEMOLIDO` AS `invent___DEMOLIDO_raw`,
 `invent`.`CONCEDID` AS `invent___CONCEDID`,
 `invent`.`CONCEDID` AS `invent___CONCEDID_raw`,
 `invent`.`FECHA_CE` AS `invent___FECHA_CE`,
 `invent`.`FECHA_CE` AS `invent___FECHA_CE_raw`,
***************
I DO NOT ATTACH ALL THE FIELDS BECAUSE OF EXCEEDING THE MAXIMUM SIZE OF THE POST CHARACTERS
***************
`ctrainv`.`IDCTRAINV` AS `ctrainv___IDCTRAINV`,
`ctrainv`.`IDCTRAINV` AS `ctrainv___IDCTRAINV_raw`,
`ctrainv`.`IDCTRA` AS `ctrainv___IDCTRA_raw`,
`ctra`.`CTRA` AS `ctrainv___IDCTRA`,
`ctrainv`.`ORDEN` AS `ctrainv___ORDEN`,
`ctrainv`.`ORDEN` AS `ctrainv___ORDEN_raw`,
`ctrainv`.`PERTENEC` AS `ctrainv___PERTENEC`,
`ctrainv`.`PERTENEC` AS `ctrainv___PERTENEC_raw`,
`ctrainv`.`PK` AS `ctrainv___PK`,
`ctrainv`.`PK` AS `ctrainv___PK_raw`,
`ctrainv`.`PKDIST` AS `ctrainv___PKDIST`,
`ctrainv`.`PKDIST` AS `ctrainv___PKDIST_raw`,
`ctrainv`.`RED` AS `ctrainv___RED`,
`ctrainv`.`RED` AS `ctrainv___RED_raw`,
`componte`.`IDCOMP` AS `componte___IDCOMP`,
`componte`.`IDCOMP` AS `componte___IDCOMP_raw`,
`componte`.`CODIGO` AS `componte___CODIGO`,
`componte`.`CODIGO` AS `componte___CODIGO_raw`,
`componte`.`TIPOCP` AS `componte___TIPOCP`,
`componte`.`TIPOCP` AS `componte___TIPOCP_raw`,
`componte`.`ORIGINAL` AS `componte___ORIGINAL`,
`componte`.`ORIGINAL` AS `componte___ORIGINAL_raw`,
`componte`.`LUZ` AS `componte___LUZ`,
`componte`.`LUZ` AS `componte___LUZ_raw`,
`componte`.`CANTOMAX` AS `componte___CANTOMAX`,
`componte`.`CANTOMAX` AS `componte___CANTOMAX_raw`,
`componte`.`CANTOMIN` AS `componte___CANTOMIN`,
`componte`.`CANTOMIN` AS `componte___CANTOMIN_raw`,
`componte`.`TIPOHAST` AS `componte___TIPOHAST`,
`componte`.`TIPOHAST` AS `componte___TIPOHAST_raw`,
`componte`.`CAR_TIR` AS `componte___CAR_TIR`,
`componte`.`CAR_TIR` AS `componte___CAR_TIR_raw`,
`componte`.`NLINCENT` AS `componte___NLINCENT`,
`componte`.`NLINCENT` AS `componte___NLINCENT_raw`,
`componte`.`NLINDCHO` AS `componte___NLINDCHO`,
`componte`.`NLINDCHO` AS `componte___NLINDCHO_raw`,
`componte`.`NLINIZQ` AS `componte___NLINIZQ`,
`componte`.`NLINIZQ` AS `componte___NLINIZQ_raw`,
`componte`.`NCABCENT` AS `componte___NCABCENT`,
`componte`.`NCABCENT` AS `componte___NCABCENT_raw`,
`componte`.`NCABDCHO` AS `componte___NCABDCHO`,
`componte`.`NCABDCHO` AS `componte___NCABDCHO_raw`,
`componte`.`NCABIZQ` AS `componte___NCABIZQ`,
`componte`.`NCABIZQ` AS `componte___NCABIZQ_raw`,
`componte`.`MACIZOEX` AS `componte___MACIZOEX`,
`componte`.`MACIZOEX` AS `componte___MACIZOEX_raw`,
`componte`.`IDGRP` AS `componte___IDGRP_raw`,
`gcompsi_0`.`grupo` AS `componte___IDGRP`,
`gcompsi`.`grupo` AS `gcompsi___grupo`,
`gcompsi`.`grupo` AS `gcompsi___grupo_raw`,
`gcompsi`.`IDGRP` AS `gcompsi___IDGRP`,
`gcompsi`.`IDGRP` AS `gcompsi___IDGRP_raw`,
`gcompsi`.`OBSERVAC` AS `gcompsi___OBSERVAC`,
`gcompsi`.`OBSERVAC` AS `gcompsi___OBSERVAC_raw`,
`gcompsi`.`TIPO` AS `gcompsi___TIPO`,
`gcompsi`.`TIPO` AS `gcompsi___TIPO_raw`,
`gcompsi`.`IDINV` AS `gcompsi___IDINV`,
`gcompsi`.`IDINV` AS `gcompsi___IDINV_raw`,
`elemento`.`IDELM` AS `elemento___IDELM`,
`elemento`.`IDELM` AS `elemento___IDELM_raw`,
`elemento`.`IDGRP` AS `elemento___IDGRP`,
`elemento`.`IDGRP` AS `elemento___IDGRP_raw`,
`elemento`.`IDTELM` AS `elemento___IDTELM`,
`elemento`.`IDTELM` AS `elemento___IDTELM_raw`,
`invent`.`IDINV` AS slug
, `invent`.`IDINV` AS `__pk_val`
FROM `invent`
LEFT JOIN `estruct` AS `estruct` ON `estruct`.`IDESTR` = `invent`.`IDESTR`
LEFT JOIN `componte` AS `componte` ON `componte`.`idinv` = `invent`.`IDINV`
LEFT JOIN `gcompsi` AS `gcompsi` ON `gcompsi`.`IDINV` = `invent`.`IDINV`
LEFT JOIN `elemento` AS `elemento` ON `elemento`.`IDGRP` = `gcompsi`.`IDGRP`
LEFT JOIN `ctrainv` AS `ctrainv` ON `ctrainv`.`IDINV` = `invent`.`IDINV`
LEFT JOIN `gcompsi` AS `gcompsi_0` ON `gcompsi_0`.`IDGRP` = `componte`.`IDGRP`
LEFT JOIN `provinc` AS `provinc` ON `provinc`.`IDPROV` = `estruct`.`IDPROV`
LEFT JOIN `ctra` AS `ctra` ON `ctra`.`IDCTRA` = `ctrainv`.`IDCTRA`
WHERE  invent.IDINV = '1'
ORDER BY `invent`.`IDINV` ASC, `componte`.`TIPOCP` ASC, `gcompsi`.`TIPO` ASC, `elemento`.`IDTELM` ASC


The last 3 left joins are databasejoins:

Code:
SELECT DISTINCT(`provinc`.`IDPROV`) AS value, `PROVINC` AS text
FROM `provinc` AS `provinc`
ORDER BY text ASC

SELECT DISTINCT(`ctra`.`IDCTRA`) AS value, `CTRA` AS text
FROM `ctra` AS `ctra`
ORDER BY text ASC

SELECT DISTINCT(`gcompsi_0`.`IDGRP`) AS value, `grupo` AS text
FROM `gcompsi` AS `gcompsi_0`
WHERE  idinv = '1'
ORDER BY text ASC

Any ideas how to improve it?

Thanks.
 
Last edited:
Some things worth checking, although that amount of elements and joins can make things slower no matter what.

1) Are the tables/elements created by Fabrik, so are all the index'is of the elements in the database existing? Missing index'is can slow things down a lot.
2) If there are some groups that you do not need to display, set "Show in form/details" option to "No" in group settings.
3) Are there a lots of calc elements calculated on the fly, that means with "Only calc on save" set to "No".
4) Is your server reasonably fast. E.g. testing in local PC with XAMPP/WAMP server can have several times longer loading times than a proper and fast server.
5) Check the loading times on different components/files in browser console's Network tab. Maybe you can get some hint from there what is slowing things down.
 
Last edited:
We are in need of some funding.
More details.

Thank you.

Members online

Back
Top