Questa è in realtà una discussione su Singe - Table - Inheritance vs. Table Per Class Inheritance e perdere l'ereditarietà unita. Il primo è correlato al Metodo A, il secondo al tuo Metodo B e il Metodo C sarebbe come avere tutti gli ID dei tuoi post in una tabella e rinviare attributi specifici per gruppi o utenti - post in tabelle diverse. Pur avendo sempre una tabella di grandi dimensioni ha i suoi impatti negativi relativi alle scansioni complete della tabella, anche l'approccio della divisione delle tabelle ha il suo. Dipende dalla frequenza con cui la tua applicazione deve accedere all'intero elenco di post rispetto al recupero solo di determinati tipi di post. Un'altra considerazione da tenere in considerazione è il partizionamento dei dati che può essere eseguito con MySQL o Oracle Database, ad es. che è un modo per organizzare i tuoi dati all'interno di tabelle date opportunità per il ciclo di vita delle informazioni (a quali dati si accede quando e con quale frequenza, una parte di essi può essere spostata e compressa riducendo le dimensioni del database e aumentando la velocità di accesso alla parte sinistra dei dati nel tabella), che è sostanzialmente suddivisa in tre tecniche principali:partizionamento basato su intervalli, partizionamento basato su elenchi e partizionamento basato su hash. Altre funzionalità non così comunemente supportate relative alla riduzione delle dimensioni delle tabelle sono quelle che riguardano gli inserti con timestamp che invalidano automaticamente i dati inseriti dopo un è scaduto un certo periodo di tempo. Ciò che in effetti è una decisione importante per la progettazione dell'applicazione e può aumentare le prestazioni è distinguere tra accessi in lettura e in scrittura al database a livello di applicazione. Considerare un MySQL - Backend:poiché gli accessi in scrittura sono ovviamente più critici per le prestazioni del database, quindi gli accessi in lettura a te potrebbe configurare un MySQL - Istanza per la scrittura nel database e un altro come replicante o f questo per gli accessi in lettura, anche se questo è anche discutibile, principalmente quando si tratta di RDT (decisioni in tempo reale), dove è d'obbligo la coerenza assoluta dei dati in un dato momento. Usare anche i pool di oggetti come livello tra l'applicazione e il database è una tecnica per migliorare le prestazioni delle applicazioni anche se non conosco ancora soluzioni esistenti nel mondo PHP. Oracle Hot Cache ne è un esempio piuttosto sofisticato. Tuttavia, potresti crearne uno personalizzato implementato su un database in memoria o utilizzando memcache.