mysql - SQL如何简化这个查询并提高性能?

标签 mysql sql select

<分区>

我猜这个查询可以用更简单的方式编写,性能更好:

SELECT COUNT(DISTINCT productid)
FROM productwords pw
WHERE productid IN
(SELECT productid FROM productwords pw JOIN words w 
  ON pw.wordid = w.id WHERE word = 'nike')
AND productid IN 
(SELECT productid FROM productwords pw JOIN words w 
  ON pw.wordid = w.id WHERE word = 'free')

查询的目标是获取包含单词 = 'nike' 和 'free' 的不同产品 ID 的数量。

谢谢!

最佳答案

如果我没有正确理解你的问题,那么使用 join 应该会更好:

SELECT COUNT(DISTINCT productid)
FROM productwords pw
   JOIN words w ON pw.productid = w.id 
WHERE word IN ('nike','free')

您当前在 pw = w.id 上的查询实际上不正确。无论您尝试在哪个字段上加入,都应该包含在上方。我猜是 productid,但也许是 wordid...

关于mysql - SQL如何简化这个查询并提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39927774/

相关文章:

php - 如何使用PHP和mysql数据库在XCode中成功登录后重定向到新 View

php - 我的表单未与服务器代码连接在这里

php - 使用列表中的随机链接更新列

MySQL,有条件地添加列

MySQL 连接空行

MySQL-从另一个表插入与常量合并的数据

mysql - 需要 MS Access 中两个不同表中的两列 ' different in number of items ' 之间的差异

mysql - 使用 varchar 中的日期对日期进行排序,在使用 MM/DD/YYY 转换为日期时间时出现问题

mysql - 如果字段名是唯一的,在 SQL 查询中使用表名?

javascript - 根据其他多选中的选择填充多选