Va bene, vediamo.
pesca a strascico attraverso un grande tavolo di commenti per trovare quelli nel messaggio in questione sarebbe costoso
Perché pensi che sarebbe costoso? Perché probabilmente credi che una ricerca lineare verrà eseguita ogni volta che impieghi O (n) tempo. Per un miliardo di commenti, verrà effettuato un miliardo di iterazioni.
Supponiamo ora di costruire un albero di ricerca binario per comment_ID. Per cercare qualsiasi commento, è necessario log (n) time [base 2]. Quindi, anche per 1 miliardo di commenti, saranno necessarie solo circa 32 iterazioni.
Considerare ora un BST leggermente modificato, in cui ogni nodo contiene k elementi anziché 1 (in un elenco) e ha nodi k + 1 figli. Le stesse proprietà di BST sono seguite anche in questa struttura dati. Quello che abbiamo qui è chiamato B-tree. Ulteriori letture: GeeksForGeeks - B Tree Introduction
Per un B-Tree, il tempo di ricerca è log (n) [base k]. Quindi, se k = 10, per 1 miliardo di voci, saranno necessarie solo 9 iterazioni.
Tutti i database salvano gli indici per le chiavi primarie in B-Trees. Quindi, il compito dichiarato non sarebbe costoso, e dovresti procedere e progettare il database nel modo in cui sembrava ovvio.
PS: è possibile creare un indice su qualsiasi colonna della tabella. Per impostazione predefinita, gli indici delle chiavi primarie sono già memorizzati. Ma attenzione, non creare indici inutili quando occupano spazio su disco.
possibile duplicato di [MYSQl Ottimizza tabella di post del blog con commenti] (http://stackoverflow.com/questions/3297583/mysql-optimize-table-of-blog-posts-with-comments) –
"modo migliore" ? Il più piccolo? La maggior parte delle funzionalità di Oracle? Cosa significa "migliore" in questo contesto? –
@S. Lott: Io voto per "la maggior parte delle funzionalità Oracle". Più funzioni, meglio è! : P – FrustratedWithFormsDesigner