Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    [MySql] OR produce Filesort

    Salve, mi sto scervellando per un problemino
    Con questa query:
    codice:
    SELECT ID_HOME, ID_GUEST, RESULT_HOME, RESULT_GUEST
    FROM GAMES
    WHERE (ID_HOME = 3 OR ID_GUEST = 3) AND YEAR = 2013
    ORDER BY TIMESTAMP ASC
    mi viene prodotto un filesort.

    Appena tolgo
    codice:
    OR ID_GUEST = 3
    il filesort sparisce, frutto dell'index che ho creato che mette in relazione ID_HOME, YEAR e TIMESTAMP. viceversa se rimetto
    codice:
    OR ID_GUEST = 3
    e aggiungo ID_GUEST agli indici mi riappare il maledetto filesort.
    Le sto provando tutte, sento di essere vicino ma non riesco a mettere gli indici a dovere. La tabella è semplicissima e ha praticamente i campi che richiamo nella select.

    HELLLLLP

  2. #2
    Ho provato anche a creare due indici:
    ID_HOME,YEAR,TIMESTAMP
    ID_GUEST,YEAR,TIMESTAMP
    ma niente.


    Chiaramente se metto FORCE INDEX(TIMESTAMP) creando l'indice TIMESTAMP non viene più il filesort ma non credo proprio che sia corretto...

  3. #3
    Ci fai vedere gli indici e l'explain?

  4. #4
    comunque per forzare a non usare il filesort devi usare SQL_SMALL_RESULT

  5. #5

  6. #6
    Sostanzialmente trovo difficoltà con l'aggiunta dell'OR, perchè senza di esso era banale. Voglio dire con un
    codice:
    WHERE ID_HOME = 3 AND YEAR = 2013
    ORDER BY TIMESTAMP ASC
    Basta creare un indice comprendente ID_HOME, YEAR e TIMESTAMP ed il gioco è fatto. Infatti così non mi "filesorteggia".
    Mentre invece quell'OR (che mi è indispensabile per trovare le partite di quella squadra sia in casa che in trasferta) mi mette in difficoltà perchè gli indici a quel punto non so come metterli!

  7. #7
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    index_merge

  8. #8
    Originariamente inviato da franzauker2.0
    index_merge
    ...?
    Sono sempre riuscito ad ottimizzare le query sui miei siti con gli indici, questa volta non ci riesco.

  9. #9
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Originariamente inviato da ..:: T€O ::..
    ...?
    Sono sempre riuscito ad ottimizzare le query sui miei siti con gli indici, questa volta non ci riesco.
    Tranquillo, arriverà qualche esperto a spiegarti come funziona index merge di mysql.

  10. #10
    Originariamente inviato da franzauker2.0
    Tranquillo, arriverà qualche esperto a spiegarti come funziona index merge di mysql.
    Ho notato che mettendo gli indici solo a ID_HOME e ID_GUEST rimuovendo tutti gli altri appare l'index_merge. Ma rimane anche il filesort (perchè ordino i risultati per data). Mi potresti almeno dire se devo rassegnarmi a tenere il filesort?

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.