Một chút muộn để trả lời điều này, nhưng vì nó được đưa ra để tìm kiếm có liên quan, điều này sẽ được sử dụng cho ai đó:
WordPress sử dụng lược đồ cơ sở dữ liệu EAV cho một phần triển khai cơ sở dữ liệu của nó. Điều này ảnh hưởng đến cả dữ liệu và người dùng. (Chúng được giữ trong các bảng riêng biệt)
Để giải thích nó từ góc dữ liệu:
Cùng với các chi tiết liên quan đến bài đăng có thể truy cập trực tiếp trong wp_posts, nhiều meta được đăng lên bảng wp_postmeta cho mỗi bài đăng. Bất kỳ dữ liệu liên quan đến bài viết (hoặc loại bài tùy chỉnh).
Vấn đề với điều đó là, nếu bạn có HEAPS của bài đăng hoặc trang (hoặc bài đăng / dữ liệu tùy chỉnh), việc tìm kiếm bất kỳ thuộc tính nào được tìm thấy trong meta trở nên khá chậm. Trước tiên, bạn tìm kiếm tất cả các mục trong bảng meta cho các tiêu chí bạn cần, sau đó lấy bài đăng có liên quan từ bảng. Các kicker là bạn cần tìm kiếm các tiêu chí MACHI riêng. Vì vậy, một tìm kiếm cho thẻ, bạn nhận được các bài đăng có giá trị X cho 'meta1', sau đó bạn tìm kiếm các tiêu chí thứ hai, giả sử, tiêu chí tùy chỉnh và nhận id bài đăng với customcriteriavalue1 trong tiêu chí tùy chỉnh, và sau đó đi đến giao điểm của các tiêu chí này và sau đó đi đến giao lộ các chi tiết bài viết từ bảng bài viết với giao điểm đó.
Ví dụ: đưa 30.000 sản phẩm vào WooC Commerce và bạn sẽ kết thúc với ~ 1.800.000 hàng trong wp_postmeta như được giải thích trong câu trả lời dưới đây:
Đăng meta vs bảng cơ sở dữ liệu riêng biệt
Vì vậy, không chỉ điều này sẽ khiến việc tìm kiếm rất kém hiệu quả (đặc biệt là khi bạn tự tham gia trên wp_postmeta cho nhiều tiêu chí), mà thậm chí truy vấn một hàng trong số 1,8 triệu hàng cũng gây ra hiệu quả.
Thiếu lược đồ EAV.
Vì vậy, với rất nhiều bài đăng, việc triển khai db WordPress khiến cho các tìm kiếm phức tạp trở nên rất chậm.
Chạy một trang web WordPress với hàng ngàn bài đăng là hoàn toàn có thể làm được, nếu bạn sử dụng các plugin lưu trữ. Bạn có thể đi nhiều hơn. Nhưng các tìm kiếm sẽ là một vấn đề.
............
Nó cũng giống với người dùng - wp_usermeta cũng sử dụng định dạng EAV tương tự. Vì vậy, nếu bạn nhận được nhiều người dùng và có nhiều plugin lưu trữ dữ liệu người dùng khác nhau trong wp_usermeta, bạn sẽ có hiệu suất tương tự.
Chưa kể với rất nhiều người dùng, có khả năng bạn sẽ có số lượng bài đăng cao - trừ khi ứng dụng của bạn chủ yếu liên quan đến người dùng (CRM, v.v.) và bạn chọn lưu trữ dữ liệu người dùng của mình trong wp_usermeta thay vì wp_postmeta . (Mặc dù không chắc).
.........
Có một số plugin cố gắng giải quyết vấn đề này, như Meta Accelerator.
https://wordpress.org/plugins/meta-accelerator/
Plugin này lấy bất kỳ dữ liệu nào cho bất kỳ loại bài đăng nào bạn chọn và đặt chúng vào các bảng phẳng. Điều này tăng tốc độ tìm kiếm rất nhiều, và nó cũng tăng tốc truy vấn bất kỳ giá trị số ít nào.
Nhưng plugin đó đang ở giai đoạn sơ khai.
Ngoài ra, bạn có thể cài đặt ElasticSearch trong máy chủ và sử dụng plugin ElasticPress hoặc một plugin khác tích hợp nó vào WordPress để tăng tốc các tìm kiếm như vậy.
PHP
phần của ngăn xếp sẽ không phải là vấn đề của bạn (Facebook được xây dựng với PHP đã được sửa đổi), nhưngMySQL
rất có thể hạn chế.