mysql - 如何优化此查询?

标签 mysql

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/

相关文章:

mysql - MySQL 触发器执行错误

php - CakePHP 多次和条件下价格不起作用

mysql - 避免使用 groupby 子句中的列

php - 显示密码不是 md5 格式的行

MYSQL 查询 : ORDER BY specific date

php - MySQL,无效的日期时间格式 : 1366 Incorrect integer value: '' for column `iRecipes` .`searches` .`id` (php)

mysql - 如何提高 MYSQL 在 UNION ALL 上的性能?

PHP PDO 返回空列名

php - 过滤过去24小时的sql查询

mysql - 想要一个解决方案使用单个查询分别查找高于限制和低于限制的计数