mysql - 提高查询性能

标签 mysql sql wordpress

我正在尝试优化此查询:

SELECT post_id 
FROM wp_postmeta
WHERE meta_key = 'passenger_group_id'
AND meta_value in (SELECT post_id 
                   FROM wp_postmeta 
                   WHERE meta_key = 'group_event' AND meta_value = '14608')
AND post_id IN (SELECT post_id 
                FROM wp_postmeta 
                WHERE meta_value='Cancelled')
AND post_id NOT IN (SELECT ID 
                    FROM wp_posts 
                    WHERE post_status='trash') 

任何帮助将不胜感激。

最佳答案

可以单独使用EXISTS子句,并添加NOT IN条件即可制成NOT EXISTS

select wp1.post_id 
from wp_postmeta wp1
WHERE meta_key = 'passenger_group_id'
and exists  ( select 1 FROM
              wp_postmeta wp2
              where ( (wp2.meta_key = 'group_event' AND wp2.meta_value = '14608' ) or wp2.meta_value ='Cancelled' )
              and wp2.post_id = wp1.meta_value 

            )
and not exists ( select 1 from
                 wp_posts p
                 on p.id = wp1.post_id
                 and p.post_status = 'trash')
                )

关于mysql - 提高查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388115/

相关文章:

php - 如何仅获取当前语言的 wp_terms ?

php - 使用 wp_get_post_terms 在类别名称中插入 & 符号失败

php - 需要加速这个 php 脚本

mysql - 在sql中创建一个表列作为两列的总和

java - 如何在 hibernate 中将我的 blob 列从 mysql 读取为字符串类型

php - 如何将 PHP session 数据保存到数据库而不是文件系统中?

mysql - 检索每组中的最后一条记录 - MySQL

php - 小部件类别 WordPress,更改显示计数

mysql - 必须插入一条记录,然后更新同一记录保证 1 :1 relationship design?

java - 由于外键的空值而无法从表中获取数据