我有一些表超过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大师的帮助。
答案 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;
在(来源,日期)上添加复合索引
希望这会有所帮助..