0

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

id  |  title | source | description | date | fullindex

id是PRIMARY key,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.5987s,好感度很低。

那么如何进行更快的查询呢?

PS:我mysql greatest n per group在google上搜索过,但是我的技术有限,没有给自己写出更好的代码,等待一些mysql高手帮忙。

4

1 回答 1

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;

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

希望这可以帮助..

于 2013-05-15T16:57:30.113 回答