Domanda

Sto costruendo un sito della comunità in cui l'accesso sarà via e -mail e i membri saranno in grado di cambiare il nome/nome di marcia.

Pensi che dovrei conservare il nome/il nome di nocciolo nella mia tabella dei membri con altre proprietà del membro o creare un'altra tabella, scrivere il nome del membro/nocciolo su quella tabella e l'ID membro associato.

Sono a favore della seconda opzione perché, penso che sarebbe più veloce estrarre il nome dei membri.

È giusto/migliore?

AGGIORNAMENTO: Il motivo è che per l'altra tabella è che devo estrarre il nome utente per diverse sezioni. Per esempio forum. Non sarebbe più veloce interrogare un tavolino per ogni nome utente per ogni post in un argomento?

È stato utile?

Soluzione

Perché pensi che la seconda opzione sarebbe più veloce?

Se il soprannome è una relazione one-to-one richiesta con l'ID membro, il luogo appropriato per archiviarli è nella stessa tabella. Questa è ancora una ricerca a record singolo indicizzata, quindi dovrebbe essere più o meno veloce come l'altra opzione.

In effetti, questa soluzione sarebbe probabilmente più veloce, dal momento che potresti ottenere il soprannome nel stesso Seleziona man mano che ottieni le altre informazioni.

Aggiornamento per rispondere all'aggiornamento alla domanda:

La seconda tabella non è più piccola in termini di numero di righe. I principali fattori in una ricerca SQL sono 1) numero di record nella tabella e 2) numero di possibili corrispondenze dalla parte indicizzata della ricerca.

In questo caso, il numero di record nella tabella più piccola sarebbe esattamente lo stesso della tabella più grande. E il numero di possibili record corrispondenti restituiti dall'indice sarà sempre 1 perché l'ID membro è univoco.

Il numero di colonne nella tabella che stai cercando è generalmente irrilevante per il tempo impiegato per restituire i dati (il numero di colonne che effettivamente elencate nell'istruzione seleziona Ricerca).

I database SQL sono molto, molto bravi a trovare dati. Struttura correttamente i tuoi dati e lascia che il database si preoccupino di riportarli. L'ottimizzazione prematura è, come si suol dire, la radice di ogni male.

Altri suggerimenti

Lo conserverei una tabella e imposterei un vincolo unico su e -mail in quella tabella.

Non riesco a vedere un singolo vantaggio nell'aggiunta di un altro tavolo.

Vai con la prima opzione: mantieni il nome/nome nella tabella dei membri. Non è necessario introdurre un tavolo aggiuntivo e il sovraccarico di un join che ne accompagna, in questo caso.

Sì, associare l'ID del membro alle altre proprietà è la strada giusta da percorrere.

Puoi semplicemente creare un indice sul nome per accelerare le tue domande.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top