Devo aggiungere un indice su una tabella con una riga?

0

Sto creando una tabella parametri nel nostro database. Questa tabella avrà 1 riga con valori specifici per l'ambiente (produzione, sviluppo, ecc.)

C'è qualche ragione per la quale dovrei definire un indice su questa tabella?

Aggiorna
Questa tabella è una tabella parametri che verrà utilizzata per guidare il nostro sistema di code di lavoro. La tabella sarà definita in questo modo:

QueuePrm
  LogLvl    integer
  ShowMs    boolean
  Restart   boolean

Questa tabella avrà sempre solo 1 riga. Nessun'altra tabella nel nostro sistema farà riferimento ad esso.

    
posta briddums 04.06.2012 - 19:27
fonte

4 risposte

7

No , non hai bisogno di un indice per una tabella di una riga, né hai bisogno di una chiave primaria. L'unico scopo di un indice è accelerare determinate operazioni rendendo possibile individuare una riga senza leggere l'intera tabella.

Molte implementazioni di database relazionali richiedono indici per i vincoli di chiave esterna o di unicità (comprese le chiavi primarie). Questa non è una necessità logica. È fatto perché un indice sarà desiderato in quasi tutti i casi, e non vale la pena di sostenere questi vincoli senza un indice. Quando una tabella è così piccola che un indice non è utile, l'indice non costa molto.

    
risposta data 04.06.2012 - 20:34
fonte
1

Mentre sembra che non ci sia bisogno ora, le tabelle come questa diventano piene di valori man mano che il sistema invecchia progressivamente. Potresti insistere su più tabelle per mantenere separati i vari parametri, ma alla fine tutte le tabelle come questa si espandono.

È meglio iniziare con una chiave, descrittiva dello scopo, se possibile. Il futuro staff di manutenzione apprezza i nomi comprensibili.

    
risposta data 04.06.2012 - 19:38
fonte
1

Per lo meno, la chiave primaria della tabella (hai un identificatore PK, sì?) dovrebbe avere un indice, creato anche come indice cluster per impostazione predefinita in MS SQL Server.

Se hai chiavi secondarie (come una colonna identificativa 'nome') che sarà un criterio di selezione, indicizzalo pure.

    
risposta data 04.06.2012 - 19:41
fonte
0

Invece di creare una tabella di una riga con molte colonne, non sarebbe più ordinata progettarla con più righe? Come

ParamName | Value
------------------
LogLevel  | 5
BuildNr   | 3.0.9
ErrorMail | [email protected]

Qui ParamName sarà la chiave primaria.

Questo ha l'effetto aggiunto che quando devi aggiungere più parametri, puoi solo INSERT di essi senza dover aggiornare le tue tabelle ed eventualmente le tue query SQL.

    
risposta data 04.06.2012 - 21:48
fonte

Leggi altre domande sui tag