Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Aran
    Registrato dal
    Nov 2002
    Messaggi
    1,529

    Indice su campo full text

    Ciao a tutti,

    io ho 2 tabelle, in una select ho aggiunto una left join per recuperare dati dalla'latra tabella in questo modo:

    SELECT users.reg_date, users.nickname, users.email, friend_registrations.user_id as idfriend
    FROM users
    LEFT JOIN friend_registrations ON (users.email=friend_registrations.email)

    in pratica devo trovarmi il match delle email degli utenti in 2 tabelle diverse.
    Ma quel LEFT JOIN li mi uccide la query in modo disumano come posso intervenire per velocizzare la cosa?

    Posso mettere un indice sul campo "friend_registrations.email" per veloccizare o è una cavolata?
    Consigli?

    Grazie mille a tutti
    Mi diceva sempre: "Mai mangiare a stomaco vuoto..."

    Frank Cianuro - Aeroplane - Aran Blog - No Spez la Catena.

  2. #2
    aggiungere un indice su un campo che usi per una join non fa male

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Quanti dati sono presenti sulle due tabelle e hai condizioni tali da poterle partizionare?

    Inoltre, perche' scrivi che fai una ricerca fulltext? E perche' ti serve questo tipo di ricerca?
    :master:

    Qui qualche informazione su questo metodo, che non mi sembra si debba applicare al tuo caso, visto che cerchi la corrispondenza per email.

    http://www.codicefacile.it/tutorials...text/category/

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da mosquito70
    Quanti dati sono presenti sulle due tabelle e hai condizioni tali da poterle partizionare?

    Inoltre, perche' scrivi che fai una ricerca fulltext? E perche' ti serve questo tipo di ricerca?
    :master:

    Qui qualche informazione su questo metodo, che non mi sembra si debba applicare al tuo caso, visto che cerchi la corrispondenza per email.

    http://www.codicefacile.it/tutorials...text/category/
    La soluzione dell'indice e, se necessario, di un partizionamento, e' quella che ti consiglio.

  5. #5
    Utente di HTML.it L'avatar di Aran
    Registrato dal
    Nov 2002
    Messaggi
    1,529
    La mia in effetti non è una ricerca fulltext, ma è la inner join che va ad appesantire molto sulla query, e volevo capire il modo migliore per poter ottimizzare per impedire che mi rallenti drasticamente la query come ho visto.

    cosa intendi per partizionamento scusami

    Nel campo della join mi interessa solo la mail, e ci sono in tutto 5 campi in quella tabella.


    thanks a tutti ancora
    Mi diceva sempre: "Mai mangiare a stomaco vuoto..."

    Frank Cianuro - Aeroplane - Aran Blog - No Spez la Catena.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Aran
    La mia in effetti non è una ricerca fulltext, ma è la inner join che va ad appesantire molto sulla query, e volevo capire il modo migliore per poter ottimizzare per impedire che mi rallenti drasticamente la query come ho visto.

    cosa intendi per partizionamento scusami

    Nel campo della join mi interessa solo la mail, e ci sono in tutto 5 campi in quella tabella.


    thanks a tutti ancora
    Il partizionamento permette di suddividere la tua tabella in varie tabelle "virtuali" (definiamole cosi', anche se il termine e' un altro).
    La suddivisione puo' essere eseguita in vari modi, e qui trovi il manuale on-line dove te li spiega.

    http://dev.mysql.com/doc/refman/5.1/...titioning.html

    Normalmente si esegue su un campo data (ad esempio effettuando partizioni per mesi o addirittura per giorni), ma puo' essere eseguito in svariati modi, dipendendo dalle esigenze e dai valori della tabella. Ad esempio, se vuoi suddividere una anagrafica per ordine alfabeti, ogni partizione avra' la prima lettera iniziale o se vuoi suddividere per fasce di eta'.

    Il partizionamento non sempre e' necessario e dipende chiaramente dalla mole dei dati (che non ho capito quanti sono nel tuo caso). Inoltre anche sulle partizioni andrebbe creato l'indice.

    Comunque, sicuramente crea un index sulla tabella e sul campo "email". Questo ti assicura una maggiore velocita' nell'estrazione dei dati, ma non e' detto che ti risolve completamente il problema.
    Infatti i problemi possono anche dipendere da come scrivi la select. In particolare la tua perche' e' scritta cosi? C'e' un motivo particolare?

    Spero di averti dato qualche spunto e come puoi capire, le prestazioni sono un argomento piuttosto complesso e dipendente, oltre che da quello che ti ho indicato prima, anche dalla macchina, dalla frammentazione della base dati/tabella, etc... e non e' molto semplice dare una risposta esaustiva senza avere piu' informazioni.

    Potresti postare la struttura delle due tabelle. Con i nomi e le definizioni dei campi?

    ciao

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.