Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940

    [MySQL] Query SQL - trooooppo lenta

    Domanda da niubbo-db(TM)

    Ho la seguente query SQL:
    codice:
    SELECT tabella_documenti.id_documento, 
    tabella_documenti.tipo_documento, 
    tabella_documenti.data_creazione, 
    tabella_documenti.nome_file, 
    tabella_documenti.titolo, 
    tabella_documenti.autore, 
    tabella_documenti.riassunto, 
    tabella_documenti.organizzazione, 
    tabella_documenti_attributi.valore_attributo_text 
    
    FROM tabella_documenti 
    LEFT JOIN tabella_documenti_attributi ON tabella_documenti_attributi.documento_id = tabella_documenti.id_documento 
    
    WHERE nome_file is NOT NULL 
    AND titolo is NOT NULL 
    AND tabella_documenti.tipo_documento = '12' 
    AND tabella_documenti.titolo like '%titolo%' 
    AND valore_attributo_text like '%commessa%' 
    AND valore_attributo_text like '%lingua%' 
    
    GROUP BY nome_file
    Per essere giusta è giusta - mi trova quanto deve - ma se le tabelle sono grandi (tabella_documenti e tabella_documenti_attributi), il JOIN ci mette una vita.
    Qualche buon'anima sa come aiutarmi?

    Nella fattispecie, come faccio a "rimpicciolire" le due tabelle prima di joinarle?

    Grazie mille.

    [.:: JaguarXF ::.]
    __________________

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Dipende a cosa serve l'estrazione dati. Nel caso di paginazione conviene senza dubbio imporre un limit alla ricerca(in base alla pagina corrente).

  3. #3
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Il problema non è lo spazio che occupano i risultati, quanto che a fare questo join:
    codice:
    SELECT tabella_documenti.id_documento, 
    tabella_documenti.tipo_documento, 
    tabella_documenti.data_creazione, 
    tabella_documenti.nome_file, 
    tabella_documenti.titolo, 
    tabella_documenti.autore, 
    tabella_documenti.riassunto, 
    tabella_documenti.organizzazione, 
    tabella_documenti_attributi.valore_attributo_text 
    
    FROM tabella_documenti 
    LEFT JOIN tabella_documenti_attributi ON tabella_documenti_attributi.documento_id = tabella_documenti.id_documento
    Ci mette un'ora....

    Quindi mi interessa sapere come rimpicciolire le tabelle prima del join, ovvero come dare delle condizioni PRIMA del join stesso, e non dopo.

    [.:: JaguarXF ::.]
    __________________

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Mi autorispondo: "Scemo, bastano delle subselect"
    "Ah ok grazie ora provo, poi vi faccio sapere"


    [.:: JaguarXF ::.]
    __________________

  5. #5
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Aiutoooo:

    Prima:

    codice:
    SELECT tabella_documenti.id_documento, 
    tabella_documenti.tipo_documento, 
    tabella_documenti.data_creazione, 
    tabella_documenti.nome_file,
    tabella_documenti.titolo,
    tabella_documenti.autore, 
    tabella_documenti.riassunto, 
    tabella_documenti.organizzazione, 
    tabella_documenti_attributi.valore_attributo_text 
    
    FROM tabella_documenti 
    LEFT JOIN tabella_documenti_attributi ON tabella_documenti_attributi.documento_id = tabella_documenti.id_documento 
    
    WHERE nome_file is NOT NULL 
    AND titolo is NOT NULL 
    
    AND tabella_documenti.tipo_documento = '12' 
    AND tabella_documenti.titolo like '%commessa%' 
    AND valore_attributo_text like '%14063%'
    
    GROUP BY nome_file
    >>> La query ha impiegato 109.4498 sec

    _____

    Adesso:

    codice:
    SELECT tabella_documenti.id_documento, 
    tabella_documenti.tipo_documento, 
    tabella_documenti.data_creazione, 
    tabella_documenti.nome_file, 
    tabella_documenti.titolo, 
    tabella_documenti.autore, 
    tabella_documenti.riassunto, 
    tabella_documenti.organizzazione, 
    tabella_documenti_attributi.valore_attributo_text 
    
    FROM tabella_documenti 
    LEFT JOIN tabella_documenti_attributi ON tabella_documenti_attributi.documento_id = tabella_documenti.id_documento 
                                          AND valore_attributo_text like '%14063%' 
    
    WHERE nome_file is NOT NULL 
    AND titolo is NOT NULL 
    
    AND tabella_documenti.tipo_documento = '12' 
    AND tabella_documenti.titolo like '%commessa%' 
    
    GROUP BY nome_file
    >>> MySQL mi si è piantato?!?!??!?!?!


    Come devo fareeeeeeeeeeeeeeeeeeeeeeeeeeeeee?

    [.:: JaguarXF ::.]
    __________________

  6. #6
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Ecco, almeno così non mi si pianta:

    codice:
    SELECT tabella_documenti.id_documento, 
    tabella_documenti.tipo_documento, 
    tabella_documenti.data_creazione, 
    tabella_documenti.nome_file, 
    tabella_documenti.titolo, 
    tabella_documenti.autore, 
    tabella_documenti.riassunto, 
    tabella_documenti.organizzazione, 
    tabella_documenti_attributi.valore_attributo_text 
    
    FROM tabella_documenti 
    LEFT JOIN tabella_documenti_attributi ON tabella_documenti_attributi.documento_id = tabella_documenti.id_documento 
                                          AND tabella_documenti_attributi.valore_attributo_text like '%14063%' 
    
    WHERE nome_file is NOT NULL 
    AND titolo is NOT NULL 
    
    AND tabella_documenti.tipo_documento = '12' 
    AND tabella_documenti.titolo like '%commessa%' 
    
    GROUP BY nome_file
    Ma ci impiega ugualmente una vita:

    >>>> La query ha impiegato 75.5317 sec


    [.:: JaguarXF ::.]
    __________________

  7. #7
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940

    [.:: JaguarXF ::.]
    __________________

  8. #8
    Controlla che:
    tabella_documenti_attributi.documento_id
    tabella_documenti.id_documento

    Siano entrambi indici.

  9. #9
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Uno sì e l'altro no ed ovviamente non ho modo di joinare sempre sapendo le key.

    Perkè?

    [.:: JaguarXF ::.]
    __________________

  10. #10

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 © 2026 vBulletin Solutions, Inc. All rights reserved.