L'indicizzazione di chiavi esterne è una buona pratica?

2

Guardando le tabelle DB create da uno sviluppatore diverso ho notato che ogni volta che una tabella aveva un campo / colonna forein_key_id , era sempre un INDEX / KEY .

Non sono sicuro che sia stato creato manualmente o automaticamente da qualche software di terze parti. Tuttavia, io stesso di solito creavo chiavi usando principi diversi. Ad esempio, poiché è una chiave esterna, non uso questo fatto per renderlo un INDEX . In genere, prendo in considerazione le considerazioni su JOIN e le prestazioni JOIN singolarmente per una query specifica.

Quindi sono curioso di saperne di più su questo - le chiavi esterne devono essere trasformate in un INDICE? Se sì, qual è la logica alla base?

    
posta Dennis 22.08.2016 - 21:42
fonte

1 risposta

9
  • Molti, se non tutti, RDBMS creano automaticamente un indice su un FK perché un FK significa che si stanno facendo join usando quelle colonne.

  • È un comportamento RDBMS standard basato sul fatto che utilizzerai queste colonne nelle ricerche.

  • Una query con un join in esso, anche quando manca una clausola WHERE, sta eseguendo ricerche nelle colonne unite e confrontando poi con il PK di un'altra tabella -

  • Gli RDBMS amano accelerare i join. Quindi creano un indice su FK.

  • L'ottimizzatore, in base alle statistiche o in base ai costi di accesso, deciderà se utilizzare o meno tale indice durante l'esecuzione di una query.

risposta data 22.08.2016 - 22:12
fonte

Leggi altre domande sui tag