Bunu cevaplamak için biraz geç, ancak ilgili arama için geldiğinden beri, bu birileri için yararlı olacaktır:
WordPress, veritabanı uygulamasının bir kısmı için EAV veritabanı şemasını kullanır. Bu hem verileri hem de kullanıcıları etkiler. (Ayrı tablolarda tutulurlar)
Veri açısından açıklamak için:
Wp_posts'ta doğrudan erişilebilir gönderiyle ilgili ayrıntıların yanı sıra, her gönderi için wp_postmeta tablosuna çok sayıda meta yayınlanır. Gönderiyle ilgili veriler (veya özel gönderi türü).
Sorun şu ki, yayınların veya sayfaların HEAPS'leri (veya özel yazı / veri) varsa, metada bulunan herhangi bir özelliği aramak oldukça yavaş olur. Önce meta tablodaki tüm girişlerde ihtiyacınız olan ölçütleri ararsınız, ardından tablodan ilgili yayını alırsınız. Belirtici, HER kriterleri ayrı ayrı aramanız gerektiğidir. Bir etiket araması, 'meta1' için X değerine sahip yayınları alırsınız, sonra ikinci ölçütleri, örneğin customcriteria'yı arar ve customcriteria'da customcriteriavalue1 ile posta kimlikleri alırsınız ve sonra bunların kesişimini alırsınız ve sonra bu kesişme noktasıyla yayınlar tablosundaki yayın ayrıntıları.
Örnek olarak - 30.000 ürünü WooCommerce'a koyun ve aşağıdaki cevapta açıklandığı gibi wp_postmeta'da ~ 1.800.000 satır elde edersiniz:
Meta ve ayrı veritabanı tabloları yayınlama
Bu nedenle, bu sadece aramayı çok verimsiz hale getirmekle kalmaz (özellikle birden fazla kriter için wp_postmeta'da kendi kendine birleşmeler yaptığınızda), aynı zamanda 1,8 mil satırlarından tek bir satırı sorgulamak bile bir performans vuruşuna neden olur.
EAV şeması eksikliği.
Çok sayıda yazı ile, WordPress db uygulaması karmaşık aramaları çok yavaş hale getirir.
Önbellek eklentileri kullanıyorsanız binlerce yayın içeren bir WordPress sitesi çalıştırmak oldukça mümkündür. Daha da ileri gidebilirsiniz. Ancak aramalar bir sorun olacak.
............
Wp_usermeta da aynı EAV formatını kullanıyor. Dolayısıyla, çok sayıda kullanıcı alırsanız ve wp_usermeta'da çeşitli kullanıcı verilerini depolayan çok sayıda eklentiniz varsa, aynı performans isabetini alırsınız.
Pek çok kullanıcıyla bahsetmemek için zaten çok sayıda gönderiye sahip olmanız muhtemeldir - uygulamanız çoğunlukla kullanıcılarla (CRM vb.) İlgili bir şey olmadığı sürece ve kullanıcı verilerinizi wp_postmeta yerine wp_usermeta'da saklamayı seçmezseniz . (Olması muhtemel değil).
.........
Meta Accelerator gibi bu sorunu çözmeye çalışan bazı eklentiler var.
https://wordpress.org/plugins/meta-accelerator/
Bu eklenti, seçtiğiniz herhangi bir yazı türü için herhangi bir veri alır ve bunları düz tablolara yerleştirir. Bu, çok fazla aramayı hızlandırır ve herhangi bir tekil değeri sorgulamayı da hızlandırır.
Ancak bu eklenti henüz bebeklik döneminde.
Alternatif olarak, Esnek Arama'yı sunucuya yükleyebilir ve bu aramaları hızlandırmak için ElastikPress eklentisini veya WordPress ile entegre eden başka bir eklentiyi kullanabilirsiniz.
PHP
yığının kısmı sizin sorununuz olmayacak (Facebook değiştirilmiş bir PHP ile oluşturulmuştur), ancakMySQL
çok iyi sınırlayıcı olabilir.