每组最新5次全文搜索

时间:2013-05-15 16:39:48

标签: mysql subquery

我有一些表超过300,000条记录,表结构:

id  |  title | source | description | date | fullindex

id是PRIMARY键,date添加了索引,source添加了索引,fullindex添加了全文索引。

现在我想进行查询。每组最新5次全文搜索。

我试过了

SELECT 'a' as t_name,id,title,source,description,date,fullindex 
FROM table1 a1
WHERE MATCH (fullindex) AGAINST ('+bool' IN BOOLEAN MODE)
and 6>(select count(*) from table1 where source=a1.source and date>a1.date)

但是这个查询费用为6.5987秒,感情非常低。

那么如何更快地进行查询?

PS:我在谷歌搜索mysql greatest n per group,但由于我的技能有限,我没有为自己制作更好的代码,等待一些mysql大师的帮助。

1 个答案:

答案 0 :(得分:0)

尝试此查询

SELECT * from
(SELECT @rn:=if(@pv=source, @rn+1, 1) as rId,
'a' t_name,id,title,@pv:=source,description,date,fullindex 
FROM table1 a1
JOIN (SELECT @pv:=0, @rId:=0)tmp
WHERE MATCH (fullindex) AGAINST ('+bool' IN BOOLEAN MODE)
ORDER BY source, date)a
WHERE a.rId <=5;

在(来源,日期)上添加复合索引

希望这会有所帮助..