ช้าไปหน่อยที่จะตอบคำถามนี้ แต่เนื่องจากจะมีการค้นหาที่เกี่ยวข้องสิ่งนี้จะเป็นประโยชน์สำหรับใครบางคน:
WordPress ใช้สกีมาฐานข้อมูล EAV เพื่อเป็นส่วนหนึ่งของการติดตั้งฐานข้อมูล สิ่งนี้มีผลต่อทั้งข้อมูลและผู้ใช้ (พวกเขาจะถูกเก็บไว้ในตารางที่แยกต่างหาก)
หากต้องการอธิบายจากมุมข้อมูล:
นอกเหนือจากรายละเอียดที่เกี่ยวข้องกับโพสต์ที่สามารถเข้าถึงได้โดยตรงใน wp_posts เมตามากมายจะถูกโพสต์ลงในตาราง wp_postmeta สำหรับแต่ละโพสต์ ข้อมูลใด ๆ ที่เกี่ยวข้องกับโพสต์ (หรือประเภทโพสต์ที่กำหนดเอง)
ปัญหาคือถ้าคุณมี HEAPS ของโพสต์หรือหน้า (หรือโพสต์ / ข้อมูลที่กำหนดเอง) มันจะค่อนข้างช้าในการค้นหาคุณสมบัติใด ๆ ที่พบในเมตา คุณค้นหารายการทั้งหมดในตารางเมตาก่อนเพื่อหาเกณฑ์ที่คุณต้องการจากนั้นรับโพสต์ที่เกี่ยวข้องจากตาราง ผู้เตะคือคุณต้องค้นหาเกณฑ์ของแต่ละรายการแยกจากกัน ดังนั้นหนึ่งค้นหาแท็กคุณจะได้รับโพสต์ด้วยค่า X สำหรับ 'meta1' จากนั้นคุณค้นหาเกณฑ์ที่สองพูดกำหนดเองเกณฑ์และรับรหัสโพสต์ด้วย customcriteriavalue1 ในกำหนดเกณฑ์เองจากนั้นจึงหาจุดตัด รายละเอียดโพสต์จากตารางโพสต์ที่มีสี่แยกนั้น
ตัวอย่าง - นำผลิตภัณฑ์ 30,000 รายการไปไว้ใน WooCommerce และคุณจะจบด้วย ~ 1,800,000 แถวใน wp_postmeta ดังที่อธิบายไว้ในคำตอบด้านล่าง:
โพสต์ meta vs ตารางฐานข้อมูลแยกต่างหาก
ดังนั้นไม่เพียง แต่จะทำให้การค้นหาไม่มีประสิทธิภาพมาก (โดยเฉพาะเมื่อคุณทำการเชื่อมต่อด้วยตนเองบน wp_postmeta สำหรับหลาย ๆ เกณฑ์) แต่ยังทำการค้นหาแถวเดียวจากหมู่ 1,8 ล้านแถวทำให้เกิดประสิทธิภาพในการทำงาน
การขาดสคีมา EAV
ดังนั้นด้วยการโพสต์จำนวนมากการติดตั้ง WordPress db ทำให้การค้นหาที่ซับซ้อนช้ามาก
การใช้งานเว็บไซต์ WordPress ที่มีโพสต์หลายพันโพสต์นั้นทำได้ค่อนข้างดีถ้าคุณใช้แคชสำหรับปลั๊กอิน คุณสามารถไปได้มากขึ้น แต่การค้นหาจะเป็นปัญหา
............
มันเหมือนกันกับผู้ใช้ด้วย - wp_usermeta ใช้รูปแบบ EAV เดียวกันเช่นกัน ดังนั้นหากคุณได้รับผู้ใช้จำนวนมากและมีปลั๊กอินจำนวนมากที่เก็บข้อมูลผู้ใช้ที่หลากหลายใน wp_usermeta คุณจะได้รับประสิทธิภาพการทำงานที่เหมือนกัน
ไม่ต้องพูดถึงกับผู้ใช้จำนวนมากมีแนวโน้มว่าคุณจะมีโพสต์จำนวนมากอยู่แล้วยกเว้นว่าแอพของคุณเป็นสิ่งที่ต้องทำกับผู้ใช้ส่วนใหญ่ (CRM เป็นต้น) และคุณเลือกที่จะเก็บข้อมูลผู้ใช้ของคุณใน wp_usermeta แทน wp_postmeta . (ไม่น่าคิดว่า)
.........
มีปลั๊กอินบางตัวที่พยายามแก้ไขปัญหานี้เช่น Meta Accelerator
https://wordpress.org/plugins/meta-accelerator/
ปลั๊กอินนี้ใช้ข้อมูลใด ๆ สำหรับโพสต์ประเภทใดก็ตามที่คุณเลือกและวางไว้ในตารางแบน วิธีนี้ช่วยให้ค้นหาได้เร็วขึ้นและยังเพิ่มความเร็วในการสืบค้นค่าเอกพจน์ใด ๆ
แต่ปลั๊กอินนั้นยังอยู่ในช่วงเริ่มต้น
หรือคุณสามารถติดตั้ง ElasticSearch ในเซิร์ฟเวอร์และใช้ปลั๊กอิน ElasticPress หรือปลั๊กอินอื่นที่รวมเข้ากับ WordPress เพื่อเร่งการค้นหาดังกล่าว
PHP
ส่วนของสแต็กจะไม่เป็นปัญหาของคุณ (Facebook ถูกสร้างด้วย PHP ที่แก้ไข) แต่MySQL
อาจมีข้อ จำกัด