我有两个表用户和postmeta。我想从用户表中获取用户ID,并希望过滤postmeta表中不存在的用户ID。
这是我的mysql查询
SELECT u.ID from users WHERE u.ID NOT IN (SELECT DISTINCT(meta_value) from postmeta WHERE meta_key = '_customer_user')
上面的查询工作正常,但由于我有成千上万的用户,而且postmeta表很大,所以花费太多时间。
谁能帮助我如何优化此查询?
最佳答案
SELECT u.ID
FROM users
WHERE NOT EXISTS ( SELECT *
FROM postmeta
WHERE meta_key = '_customer_user'
AND meta_value = u.ID )
因为这听起来像WP,所以我在这里推荐一些有关wp_postmeta性能的技巧:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta(我认为这些技巧不会显着帮助此查询。)