Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    79

    [MySQL] Slow Query per una JOIN in piu'

    Salve a tutti,
    ho una SELECT che interessa 8 tabelle di 3 database. Quello che genera e' un report e per crearlo impiega circa 0.4 secondi.

    Aggiungendo un'altra JOIN i tempi passano a 19 secondi!!!!
    La tabella aggiuntiva appartiene a SugarCRM e contiene le relazioni tra la gli elementi della tabella accounts ed una tabella custom. Quindi ho:
    1) la tabella accounts che gia' fa parte della query
    2) la tabella delle relazioni tra accounts e custom
    3) la tabella custom

    Aggiungendo le 2 JOIN per raggiungere le informazioni relative agli elementi di accounts i tempi arrivano a 25 secondi!!!

    Ho provato a creare degli indici in entrambe le tabelle ma il risultato non cambia.





    EDIT

    Uno dei motivi della lentezza potrebbe essere il fatto che l'id accounts nella tabella delle relazioni non e' unico. Infatti ad ogni elemento di accounts corrispondono piu' elementi in custom.

  2. #2
    cacchio, se Zeno lo stagnaro m'avesse ridato la boccia di vetro, potrei vedere la tua query... mo je telefeno e vedo se me la ridà

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    79
    Zeno e' uscito, fidate. Eccote la query:

    Codice PHP:
    SELECT  mydb.oggetti.ogg_idmydb.oggetti.ogg_nomemydb.oggetti.ogg_stato, IF(mydb.oggetti.ogg_fornitore_e,1,0) AS suppliermydb.elenchi.ele_descla_idclasse_e,  sugardb.accounts_cstm.contract_c AS contractsugardb.accounts_cstm.contract_type_c AS contract_typesugardb.accounts.id AS account_idsugardb.accounts_cstm.account_status_c AS account_status,  cmsdb.node.nid AS node_idcmsdb.node.tnid AS tnidcmsdb.node.status AS node_status  FROM (mydb.oggetti  JOIN mydb.elenchi ON (mydb.oggetti.ogg_localita_e=mydb.elenchi.ele_id)  JOIN mydb.classi ON (mydb.oggetti.ogg_id=mydb.classi.cla_idoggetto_e)  JOIN sugardb.accounts_cstm ON (mydb.oggetti.ogg_id=sugardb.accounts_cstm.ogg_id_c)  JOIN sugardb.accounts ON (sugardb.accounts_cstm.id_c=sugardb.accounts.id)  JOIN sugardb.haran_contents_accounts_c ON (sugardb.haran_contents_accounts_c.haran_contc8a8ccounts_ida=sugar602_db.accounts_cstm.id_cJOIN sugar602_db.haran_contents ON (sugardb.haran_contents.id=sugardb.haran_contents_accounts_c.haran_contca19ontents_idb)  JOIN cmsdb.content_type_struttura ON (mydb.oggetti.ogg_id=RIGHT(cmsdb.content_type_struttura.field_id_ogg_value12)) JOIN cmsdb.node ON (cmsdb.content_type_struttura.nid=cmsdb.node.nidJOIN cmsdb.url_alias ON (cmsdb.content_type_struttura.nid=RIGHT(cmsdb.url_alias.src4)))  WHERE (ogg_tipo='S' AND cmsdb.node.language='en'ORDER BY sugardb.accounts.date_entered DESC 
    La parte incriminata e' questa:
    Codice PHP:
    JOIN sugardb.haran_contents_accounts_c ON (sugardb.haran_contents_accounts_c.haran_contc8a8ccounts_ida=sugar602_db.accounts_cstm.id_cJOIN sugar602_db.haran_contents ON (sugardb.haran_contents.id=sugardb.haran_contents_accounts_c.haran_contca19ontents_idb

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    79
    Dividendo la query entrambe sono velocissime.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    non ho capito un granchè.

    Dumpa le tabelle (almeno le prime righe), con struttura e possibilmente dati, così che si possa capire esattamente come sono fatte.

    Altrimenti è arduo aiutare

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.