使用此查询来获取与履行所有三项必需的词项(联想,笔记本电脑,计算机)字样的产品优化查询:如何使用两个内部加入
SELECT t1.id, t1.name, t1.price FROM
(SELECT p.id AS productid, name, price
FROM products p JOIN productwords pw ON p.id = pw.productid
JOIN words w ON pw.wordid = w.id WHERE word.term = 'lenovo') t1
INNER JOIN
(SELECT p.id AS productid, name, price
FROM products p JOIN productwords pw ON p.id = pw.productid
JOIN words w ON pw.wordid = w.id WHERE word.term = 'laptop') t2
INNER JOIN
(SELECT p.id AS productid, name, price
FROM products p JOIN productwords pw ON p.id = pw.productid
JOIN words w ON pw.wordid = w.id WHERE word.term = 'computer') t3
ON
t1.productid = t2.productid
AND
t1.productid = t3.productid
ORDER BY t1.name
据我所看到的,查询考虑每个术语的整个单词表(这些表具有索引,数据库是MySql)。
查询是否可以以更好的方式重写,所以它会变得更快? (这些表格包含数百万行)
例如,对于子集,因此'笔记本电脑'搜索仅考虑与'lenovo'匹配的行 - 而'计算机'搜索仅考虑匹配第一个'lenovo'的行,然后'笔记本电脑'。
谢谢!
见http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for什么似乎对我来说是一个非常简单的sql查询 – Strawberry