Un peu tard pour répondre à cela, mais depuis sa sortie pour une recherche pertinente, cela sera utile à quelqu'un:
WordPress utilise le schéma de base de données EAV pour une partie de sa mise en œuvre de base de données. Cela affecte à la fois les données et les utilisateurs. (Ils sont conservés dans des tableaux séparés)
Pour l'expliquer sous l'angle des données:
En plus des détails liés aux articles directement accessibles dans wp_posts, de nombreuses métadonnées sont publiées dans la table wp_postmeta pour chaque article. Toutes les données pertinentes pour la publication (ou le type de publication personnalisé).
Le problème est que si vous avez des HEAPS de publications ou de pages (ou des publications / données personnalisées), il devient assez lent de rechercher toute propriété trouvée dans la méta. Vous recherchez d'abord toutes les entrées dans la méta-table pour les critères dont vous avez besoin, puis obtenez le poste pertinent dans la table. Le kicker est que vous devez rechercher CHACUN des critères séparément. Donc, une recherche de balise, vous obtenez les publications avec la valeur X pour 'meta1', puis vous recherchez des seconds critères, par exemple, des critères personnalisés et obtenez des identifiants de publication avec customcriteriavalue1 dans customcriteria, ET puis prenez l'intersection de ceux-ci et ensuite allez chercher les détails du post du tableau des posts avec cette intersection.
Par exemple - mettez 30 000 produits dans WooCommerce, et vous vous retrouverez avec environ 1 800 000 lignes dans wp_postmeta comme expliqué dans la réponse ci-dessous:
Post méta vs tables de base de données distinctes
Ainsi, non seulement cela rendra la recherche très très inefficace (en particulier lorsque vous effectuez des jointures automatiques sur wp_postmeta pour plusieurs critères), mais également l'interrogation d'une seule ligne parmi 1,8 mil lignes entraîne une baisse des performances.
Carence du schéma EAV.
Donc, avec beaucoup de publications, l'implémentation de WordPress db rend les recherches complexes très lentes.
L'exécution d'un site WordPress avec des milliers de publications est tout à fait faisable, si vous utilisez des plugins de mise en cache. Vous pouvez aller encore plus loin. Mais les recherches seront un problème.
............
C'est la même chose pour les utilisateurs aussi - wp_usermeta utilise également le même format EAV. Donc, si vous obtenez beaucoup d'utilisateurs et que vous avez beaucoup de plugins qui stockent diverses données utilisateur dans wp_usermeta, vous obtiendrez le même résultat de performance.
Sans parler du nombre d'utilisateurs, il est probable que vous ayez déjà un grand nombre de publications - à moins que votre application soit principalement liée aux utilisateurs (CRM, etc.) et que vous choisissez de stocker vos données utilisateur dans wp_usermeta au lieu de wp_postmeta . (Peu probable cependant).
.........
Il existe des plugins qui tentent de contourner ce problème, comme Meta Accelerator.
https://wordpress.org/plugins/meta-accelerator/
Ce plugin prend toutes les données pour le type de publication que vous choisissez et les place dans des tableaux plats. Cela accélère beaucoup la recherche et accélère également l'interrogation de toute valeur singulière.
Mais ce plugin en est encore à ses balbutiements.
Alternativement, vous pouvez installer ElasticSearch sur le serveur et utiliser le plug-in ElasticPress ou un autre plug-in qui l'intègre à WordPress pour accélérer ces recherches.
PHP
partie de la pile ne sera pas votre problème (Facebook est construit avec un PHP modifié), maisMySQL
pourrait très bien être limitant.