我有两张桌子。第一个表(NESNE
表)是我正在搜索的主表,并且有书籍信息。第二个表(ciltkopya
表)有大量的书籍。所以一本书可以有1,2,3 ..和更多的卷。我想表明数据库上有多少卷。我有以下查询,它的工作原理。但它是slow
。我怎样才能fast
呢?
SELECT count(*)
FROM nesne n
LEFT JOIN ciltkopya c ON n.id = c.nesne_id
WHERE MATCH(`n.formdata`) AGAINST('world' IN BOOLEAN MODE)
当我查询EXPLAIN
我的查询时,请执行以下操作:
http://i.stack.imgur.com/jWCef.png
好的我弄清楚了。解决方案:
SELECT count(c.nesne_id)FROM ciltkopya c JOIN(SELECT id FROM nesne WHERE MATCH(formdata)AGAINST('world'IN BOOLEAN MODE))n ON n.id = c.nesne_id
Thaks:)
答案 0 :(得分:0)
假设formdata
位于c
,我首先要将left join
更改为inner join
:
SELECT count(*)
FROM nesne n JOIN
ciltkopya c
ON n.id = c.nesne_id
WHERE MATCH(c.formdata) AGAINST('world' IN BOOLEAN MODE);
其次,我会质疑是否需要join
。这可能会做你想要的:
SELECT count(*)
FROM ciltkopya c
WHERE MATCH(c.formdata) AGAINST('world' IN BOOLEAN MODE);
如果formdata
确实在n
,那么您可能根本不需要join
。