SELECT DISTINCT wposts.*
FROM wp_2_posts wposts, wp_2_postmeta wpostmeta, wp_2_postmeta wpostmeta1, wp_2_term_taxonomy, wp_2_terms, wp_2_term_relationships
WHERE wposts.ID = wpostmeta.post_id
AND wp_2_terms.term_id = '8'
AND wp_2_term_taxonomy.term_id = wp_2_terms.term_id
AND wp_2_term_taxonomy.term_taxonomy_id = wp_2_term_relationships.term_taxonomy_id
AND wp_2_term_relationships.object_id = wposts.ID
AND wpostmeta.meta_key = 'validity'
AND wpostmeta.meta_value > '".$logic_date."'
AND wpostmeta1.meta_key != 'permanent'
AND wposts.post_status = 'publish'
AND wposts.post_type = 'post'
ORDER BY wposts.post_date DESC
到目前为止的好建议,这里是仍然不使用第二个 meta_key 的 'evolved' 查询!= 'permanent_listing'
选择 wposts.* FROM wp_2_posts wposts LEFT JOIN wp_2_postmeta wpostmeta ON wposts.ID = wpostmeta.post_id LEFT JOIN wp_2_term_relationships wrelationships ON wrelationships.object_id = wposts.ID LEFT JOIN wp_2_term_taxonomy wtaxonomy ON wtaxonomy.term_taxonomy_id = wrelationships.term_taxonomy_id LEFT JOIN wp_2_terms wterms ON wtaxonomy.term_id = wterms.term_id 在哪里 wterms.term_id = '--此处的类别 ID--' 和 wpostmeta.meta_key = 'wpx_validity' 和 wpostmeta.meta_value > '--今天的日期在这里--' AND wpostmeta.meta_key != 'permanent_listing' 和 wposts.post_status = '发布' 和 wposts.post_type = 'post' 按 wposts.post_date DESC 排序
LEFT JOIN 和 INNER JOIN 似乎做同样的事情。 存在以下索引:wp_2_terms.term_id、wp_term_taxonomy.term_taxonomy_id、wp_2_term_relationships.object_id wp_2_postmeta 有一个 meta_id 索引和字段:post_id、meta_key、meta_value。
此查询正在 WPMU 上运行。
最佳答案
首先我建议您使用 INNER JOIN 语法来连接表:
SELECT table1.c1, table2.c2 FROM table1
INNER JOIN table2 ON table1.ck = table2.ck
您还应该避免使用 * 运算符并仔细选择您需要的列。 DISTINCT 还会减慢您的查询速度。你真的需要它吗?
关于mysql - 如何优化此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470808/