• User Attivo

    Utilizzo degli indici

    Ho notato dalle statistiche fornite dal phpmyadmin che molti valori di runtime di mysql sono sballati: Handler_read_rnd, Handler_read_rnd_next, Select_full_join, ecc.
    Nei consigli dice che probabilmente non sto usando al meglio gli indici.

    Dato che in ogni select mi riferisco alla chiave primaria, e che automaticamente mysql imposta quest'ultima come indice primario per quale motivo i valori sono sballati?

    Inoltre ho letto che si consiglia di creare un indice quando una tabella viene ordinata solitamente in abse ad un campo. Quindi per una tabella news ha senso avere un indice primario che è l'id e un indice per la data?


  • User Attivo

    @scar81 said:

    Inoltre ho letto che si consiglia di creare un indice quando una tabella viene ordinata solitamente in abse ad un campo. Quindi per una tabella news ha senso avere un indice primario che è l'id e un indice per la data?

    Direi di si...

    Tieni presente che gli indici devono essere mantenuti, in tabelle ad elevata attività DML. Per cui pianifica una ricostruzione di tali indici abbastanza spesso (REPAIR TABLE ... ).


  • User Attivo

    Quello che non riesco a capire è quando un indice è di troppo. Se ad esempio io ho una tabella e le select più utilizzate sono:
    SELECT id,id_altratabella,testo,ordine FROM tabella WHERE id_altratabella=1 order by ordine
    SELECT id,id_altratabella,testo,ordine FROM tabella WHERE id=1

    Ho un indice primario su id, mi conviene creare un indice anche su id_altratabella e ordine?


  • User Attivo

    In teoria si... se i dati non sono molti non noterai grosse differenze, ma se i dati sono tanti e gli accessi anche si vedrà eccome che c'e' l'indice