Really poor performance with list loading

esedic

New Member
I'm experiencing really slow loading (10+ seconds) of a list with just a couple of records. Actually even if there is only one record, list (page) loads really slowly. If there are none, page loads normally.

Strange thing is, if I run MySQL query (in PHPMyAdmin) , which I got from fabrikDebug GetData, query is executed under 0.0030 second.

Also if I view data in backend (Form > View data), page loads normally.

Structure of my data is like this:

I have 3 tables (lists):
-#_fb_regija (these are regions; in slovenian: regije)
-#_fb_obcina(these are cities; in slovenian: ob?ine)
-#_lokalne_volitve_2014 (this is table to store form data)

Code:
// #_fb_regija
Name        Type
id              int(11)
regija        varchar(255)
 
// #_fb_obcina
Name        Type
id                int(11)
obcina        varchar(255)
regija_id    int(11)
 
// #_lokalne_volitve_2014
Name                Type
id                        int(11)
date_time        datetime
regija                  int(11)
obcina                int(11)
kandidat            varchar(255)
predlagatelj        varchar(255)
skupno_vprasanje_1          text
skupno_vprasanje_2          text
skupno_vprasanje_3          text
skupno_vprasanje_4a        text
skupno_vprasanje_4b        text
skupno_vprasanje_4c        text
skupno_vprasanje_4d        text
skupno_vprasanje_4e        text
lokalno_okolje_1                text
lokalno_okolje_2                text
lokalno_okolje_3                text


Form is structured like this:
regija - databasejoin dropdown - it generates dropdown with regions list from table #_fb_regija
ob?ina - cascadingdropdown - it generates dropdown with cities list from table #_fb_obcina. It is watches regija dropdown for dynamic list of cities
All other fields are normal fields (text, textarea).

I created multiple menus with data filtering as I want to display records only for one region at a time.
So in menu in Fabrik List Options tab > Pre-filters I have this filter (example for one region):

Code:
            Elements    Condition    Value    Type      Access
AND    Regija          EQUALS      1            Query    Public

And this is the query, which is executed:
Code:
SELECT SQL_CALC_FOUND_ROWS `i826u_lokalne_volitve_2014`.`id`
AS `i826u_lokalne_volitve_2014___id`, `i826u_lokalne_volitve_2014`.`id`
AS `i826u_lokalne_volitve_2014___id_raw`, `i826u_lokalne_volitve_2014`.`date_time`
AS `i826u_lokalne_volitve_2014___date_time`, `i826u_lokalne_volitve_2014`.`date_time`
AS `i826u_lokalne_volitve_2014___date_time_raw`, `i826u_lokalne_volitve_2014`.`regija`
AS `i826u_lokalne_volitve_2014___regija_raw`, `i826u_fb_regija`.`regija`
AS `i826u_lokalne_volitve_2014___regija`, `i826u_lokalne_volitve_2014`.`obcina`
AS `i826u_lokalne_volitve_2014___obcina_raw`, `i826u_fb_obcina`.`obcina`
AS `i826u_lokalne_volitve_2014___obcina`, `i826u_lokalne_volitve_2014`.`kandidat`
AS `i826u_lokalne_volitve_2014___kandidat`, `i826u_lokalne_volitve_2014`.`kandidat`
AS `i826u_lokalne_volitve_2014___kandidat_raw`, `i826u_lokalne_volitve_2014`.`predlagatelj`
AS `i826u_lokalne_volitve_2014___predlagatelj`, `i826u_lokalne_volitve_2014`.`predlagatelj`
AS `i826u_lokalne_volitve_2014___predlagatelj_raw`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_1`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_1`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_1`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_1_raw`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_2`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_2`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_2`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_2_raw`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_3`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_3`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_3`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_3_raw`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4a`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4a`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4a`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4a_raw`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4b`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4b`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4b`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4b_raw`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4c`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4c`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4c`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4c_raw`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4d`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4d`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4d`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4d_raw`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4e`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4e`, `i826u_lokalne_volitve_2014`.`skupno_vprasanje_4e`
AS `i826u_lokalne_volitve_2014___skupno_vprasanje_4e_raw`, `i826u_lokalne_volitve_2014`.`lokalno_okolje_1`
AS `i826u_lokalne_volitve_2014___lokalno_okolje_1`, `i826u_lokalne_volitve_2014`.`lokalno_okolje_1`
AS `i826u_lokalne_volitve_2014___lokalno_okolje_1_raw`, `i826u_lokalne_volitve_2014`.`lokalno_okolje_2`
AS `i826u_lokalne_volitve_2014___lokalno_okolje_2`, `i826u_lokalne_volitve_2014`.`lokalno_okolje_2`
AS `i826u_lokalne_volitve_2014___lokalno_okolje_2_raw`, `i826u_lokalne_volitve_2014`.`lokalno_okolje_3`
AS `i826u_lokalne_volitve_2014___lokalno_okolje_3`, `i826u_lokalne_volitve_2014`.`lokalno_okolje_3`
AS `i826u_lokalne_volitve_2014___lokalno_okolje_3_raw`, `i826u_lokalne_volitve_2014`.`id`
AS slug , `i826u_lokalne_volitve_2014`.`id`
AS `__pk_val`
FROM `i826u_lokalne_volitve_2014`
LEFT JOIN `i826u_fb_regija`
AS `i826u_fb_regija`
ON `i826u_fb_regija`.`id` = `i826u_lokalne_volitve_2014`.`regija`
LEFT JOIN `i826u_fb_obcina`
AS `i826u_fb_obcina`
ON `i826u_fb_obcina`.`id` = `i826u_lokalne_volitve_2014`.`obcina`
WHERE ( LOWER(i826u_lokalne_volitve_2014.regija) = (1) )

I really don't understand this poor performance.
Any help/suggestions would be appreciated!
 
Woohoo!

After whole day I've managed to solve this. The solution was to set element parameter "include_in_list_query" to No for elements, which I didn't display in the list.
 
Yup. That then saves a lot of processing spent preparing those elements for display (rendering) when they aren't going to be used.

-- hugh
 
We are in need of some funding.
More details.

Thank you.

Members online

Back
Top