优化mysql不在查询中

yzuktlbb  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(220)

我有两张table,用户和 Postman 。我想从users表中获取用户id,并想筛选postemta表中不存在的用户id。
这是我的mysql查询

SELECT u.ID from users WHERE u.ID NOT IN (SELECT DISTINCT(meta_value) from postmeta WHERE meta_key = '_customer_user')

上面的查询工作正常,但由于我有成千上万的用户,而且posteta表很大,这需要花费太多时间。
有人能帮我优化这个查询吗?

3z6pesqy

3z6pesqy1#

这样试试

SELECT u.ID
FROM diet_users AS u
WHERE NOT EXISTS
    (SELECT pm.meta_value
     FROM diet_postmeta AS pm
     WHERE meta_key = '_customer_user'
       AND pm.meta_value = u.ID)

希望这有帮助!

eblbsuwk

eblbsuwk2#

SELECT  u.ID
    FROM  users
    WHERE NOT EXISTS ( SELECT *
                FROM postmeta
                WHERE meta_key = '_customer_user'
                  AND meta_value = u.ID )

因为这闻起来像wp,我推荐一些关于wp\U postmeta性能的提示:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta (我不认为这些提示对这个问题有很大帮助。)

b09cbbtk

b09cbbtk3#

查看expalin,并使用not exists替换

相关问题