Mysql 当有很多Posteta时,query_posts()会很慢

Mysql 当有很多Posteta时,query_posts()会很慢,mysql,wordpress,Mysql,Wordpress,我在wp_posts中有大约300k的数据,在wp_postmeta中有大约500k的数据,每次调用这个查询大约需要5~7秒,我需要做什么/更改来优化它?因为这个查询太慢了 SELECT SQL_CALC_FOUND_ROWS DISTINCT wp_posts.*, po.meta_value as postorder, rent_status.meta_value as status, STR_TO_DATE(CONCAT(a_year.meta_value,

我在
wp_posts
中有大约300k的数据,在
wp_postmeta
中有大约500k的数据,每次调用这个查询大约需要5~7秒,我需要做什么/更改来优化它?因为这个查询太慢了

SELECT 
    SQL_CALC_FOUND_ROWS DISTINCT wp_posts.*, 
    po.meta_value as postorder, rent_status.meta_value as status, 
    STR_TO_DATE(CONCAT(a_year.meta_value, "-", a_month.meta_value, "-", "01"), "%Y-%m-%d") AS available_date
FROM wp_posts
LEFT JOIN wp_postmeta otm ON ( otm.post_id = wp_posts.ID AND otm.meta_key = "off_the_market" )
LEFT JOIN wp_postmeta AS po ON (wp_posts.ID = po.post_id AND po.meta_key='post_order')
INNER JOIN wp_postmeta a_month ON (a_month.post_id=wp_posts.ID AND a_month.meta_key="available_month")
INNER JOIN wp_postmeta a_year ON (a_year.post_id=wp_posts.ID AND a_year.meta_key="available_year")
INNER JOIN wp_postmeta rent_status ON (rent_status.post_id=wp_posts.ID AND rent_status.meta_key="status")
WHERE 
    1=1
    AND wp_posts.post_type = 'post'
    AND wp_posts.post_status = 'publish'
    AND ((otm.meta_value IS NOT NULL AND otm.meta_value <> "yes") OR otm.meta_value IS NULL )
    AND (rent_status.meta_value<>"N" OR (rent_status.meta_value="N" AND STR_TO_DATE(CONCAT(a_year.meta_value,"-",a_month.meta_value,"-","01"), "%Y-%m-%d") BETWEEN CAST("2020-11-01" as DATE) AND CAST("2021-05-04" as DATE)))
ORDER BY
    available_date ASC, 
    postorder*1 DESC, 
    status DESC
LIMIT 0, 12
array(
    'posts_per_page'    => 12,
    'paged'             => $paged,
    'post_status'       => 'publish',
    'cache_results'     => false
);