Un po 'in ritardo per rispondere a questo, ma dal momento che sta arrivando per la ricerca pertinente, questo sarà utile a qualcuno:
WordPress utilizza lo schema del database EAV per parte della sua implementazione del database. Ciò influisce sia sui dati che sugli utenti. (Sono tenuti in tabelle separate)
Per spiegarlo dal punto di vista dei dati:
Insieme ai dettagli relativi ai post direttamente accessibili in wp_posts, numerosi meta vengono pubblicati nella tabella wp_postmeta per ogni post. Qualsiasi dato rilevante per il post (o tipo di post personalizzato).
Il problema è che se hai HEAPS di post o pagine (o post / dati personalizzati), diventa piuttosto lento cercare qualsiasi proprietà trovata in meta. Prima devi cercare tutte le voci nella meta tabella per i criteri di cui hai bisogno, quindi ottenere il post pertinente dalla tabella. Il kicker è che devi cercare OGNI criterio separatamente. Quindi una ricerca per tag, ottieni i post con il valore X per "meta1", quindi cerchi i secondi criteri, diciamo, criteri personalizzati e ottieni ID post con criteri di valutazione personalizzati in criteri personalizzati, quindi prendi l'intersezione di questi e poi vai a ottenere i dettagli del post dalla tabella dei post con quell'intersezione.
Ad esempio, inserisci 30.000 prodotti in WooCommerce e finirai con ~ 1.800.000 righe in wp_postmeta, come spiegato nella seguente risposta:
Pubblica meta vs tabelle di database separate
Quindi, non solo questo renderà la ricerca molto inefficiente (specialmente quando si eseguono i self join su wp_postmeta per più criteri), ma anche eseguire una query su una singola riga tra 1,8 milioni di righe provoca un calo delle prestazioni.
Carenza dello schema EAV.
Quindi, con molti post, l'implementazione del db di WordPress rende le ricerche complesse molto lente.
L'esecuzione di un sito WordPress con migliaia di post è abbastanza fattibile se si utilizzano plug-in di cache. Puoi andare ancora di più. Ma le ricerche saranno un problema.
............
Lo stesso vale anche per gli utenti: anche wp_usermeta utilizza lo stesso formato EAV. Quindi, se hai molti utenti e hai molti plugin che memorizzano vari dati utente in wp_usermeta, otterrai lo stesso risultato prestazionale.
Per non parlare di così tanti utenti, è probabile che tu abbia già un numero elevato di post, a meno che la tua app non abbia a che fare principalmente con gli utenti (CRM ecc.) E decidi di archiviare i tuoi dati utente in wp_usermeta anziché in wp_postmeta . (Improbabile però).
.........
Ci sono alcuni plugin che cercano di aggirare questo problema, come Meta Accelerator.
https://wordpress.org/plugins/meta-accelerator/
Questo plugin prende tutti i dati per ogni tipo di post che scegli e li mette in tabelle piatte. Questo accelera molto la ricerca e accelera anche l'interrogazione di qualsiasi valore singolare.
Ma quel plugin è ancora agli inizi.
In alternativa, puoi installare ElasticSearch nel server e utilizzare il plug-in ElasticPress o un altro plug-in che lo integra in WordPress per accelerare tali ricerche.
PHP
parte dello stack non sarà il tuo problema (Facebook è costruito con un PHP modificato), maMySQL
molto bene potrebbe essere limitante.