• User

    queries duplicate

    Salvee

    attivando il debug ho notato che nelle pagine del sito ci sono diverse queries duplicate

    come si potrebbe risolvere

    grazie


  • User Attivo

    Ciao, dovresti porre la domanda in modo più preciso e dettagliato.

    "*attivando il debug" e "diverse queries duplicate" *possono voler dire tante cose.


  • User

    hai ragione ! mi sono immerso troppo nel "problema" 😞

    ho notato che nella home e nelle altre pagine del sito andando ad analizzare il risultato del debug in merito alle queries del DB risulta che alcune sono duplicate

    facendo dei test (tipo prova del 9) cioè ho disattivato i moduli "elenco articoli" che ho nella home ed ho notato che le queries duplicate erano sparite
    quindi penso siano legate a questo modulo

    posto qui uno dei duplicati che mi ritrovo nel risultato del debug

    
    SELECT `m`.`tag_id`,`t`.*
    
      FROM `#_contentitem_tag_map` AS m 
    
      INNER JOIN `#_tags` AS t  
      ON `m`.`tag_id` = `t`.`id`
    
      WHERE `m`.`type_alias` = 'com_content.article' 
      AND `m`.`content_item_id` = 106 
      AND `t`.`published` = 1 
      AND t.access IN (1,1,5)
    
    

    un'altra

    
    SELECT c.id, c.asset_id, c.access, c.alias, c.checked_out, c.checked_out_time,
                c.created_time, c.created_user_id, c.description, c.extension, c.hits, c.language, c.level,
                c.lft, c.metadata, c.metadesc, c.metakey, c.modified_time, c.note, c.params, c.parent_id,
                c.path, c.published, c.rgt, c.title, c.modified_user_id, c.version, 
      CASE WHEN CHAR_LENGTH(c.alias) != 0 THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as slug
    
      FROM #_categories as c
    
      LEFT JOIN AS s 
      ON (s.lft <= c.lft 
      AND s.rgt >= c.rgt) OR (s.lft > c.lft 
      AND s.rgt < c.rgt)
    
      LEFT JOIN  (SELECT cat.id as id 
      FROM AS cat JOIN AS parent 
      ON cat.lft BETWEEN parent.lft 
      AND parent.rgt 
      WHERE parent.extension = 'com_content' 
      AND parent.published != 1 
      GROUP BY cat.id) AS badcats 
      ON badcats.id = c.id
    
      WHERE (c.extension='com_content' OR c.extension='system') 
      AND c.access IN (1,1,5) 
      AND c.published = 1 
      AND s.id=37 
      AND badcats.id is null
    
      GROUP BY c.id, c.asset_id, c.access, c.alias, c.checked_out, c.checked_out_time,
                 c.created_time, c.created_user_id, c.description, c.extension, c.hits, c.language, c.level,
                 c.lft, c.metadata, c.metadesc, c.metakey, c.modified_time, c.note, c.params, c.parent_id,
                 c.path, c.published, c.rgt, c.title, c.modified_user_id, c.version
    
      ORDER BY c.lft
    
    
    
    

    spero di essere stato più chiaro


  • Moderatore

    Verifica un tipo di modulo alla volta riducendo l'assegnazione del modulo e i valori a un caso elementare (es. modulo pubblicato in unica posizione che mostra un unico articolo). Bisogna capire se il modulo:

    • è assegnato più volte
    • è "scritto male" cioè ripete per qualche motivo la stessa query
    • presenta la stessa query di un altro modulo

  • User

    @FDA said:

    Verifica un tipo di modulo alla volta riducendo l'assegnazione del modulo e i valori a un caso elementare (es. modulo pubblicato in unica posizione che mostra un unico articolo). Bisogna capire se il modulo:

    • è assegnato più volte
    • è "scritto male" cioè ripete per qualche motivo la stessa query
    • presenta la stessa query di un altro modulo

    ho fatto il test
    ne risulta che anche con il modulo avente un solo articolo mi restitusice una query duplicata
    ho provato a cambaire il layout pochè c'è un 'override del template per questo modulo e non risultano più query duplicate

    quindi mi sembra di aver caapito che c'è qualcosa nell'override del layout che non va


  • Moderatore

    Penso che l'hai beccato! 😉


  • User

    ho trovvato dove viene raddoppiata la query

    
    $categories = JCategories::getInstance('Content', array('countItems' => 0));
    $category = $categories->get($item->catid);
    
    

    come potrei richiamare queste informazioni in modo alternativo