Я пытаюсь оптимизировать свой запрос, в котором используется GROUP BY. Но разве это не займет слишком много времени.
У меня есть виртуальная таблица, которая содержит 3 столбца:
CREATE VIRTUAL TABLE GoiWordsWithSeq
USING FTS5(idseq,sid,body);
Я хочу, чтобы группа была такой же, как в запросе ниже, но это просто бегать слишком долго. Например, я сначала попробовал это, и он работает довольно хорошо, но все же мне интересно, смогу ли я сделать это быстрее:
select
GROUP_CONCAT(body), sid
from GoiWordsWithSeq
GROUP BY sid
HAVING sid IN (
select sid from GoiWordsWithSeq
where GoiWordsWithSeq.body match 'awesome'
)
Затем:
select
GROUP_CONCAT(body), GoiWordsWithSeq.sid
from GoiWordsWithSeq
inner join (
select sid from GoiWordsWithSeq
where GoiWordsWithSeq.body match 'awesome'
) GoiMatch ON GoiMatch.sid = GoiWordsWithSeq.sid
GROUP BY GoiWordsWithSeq.sid
Но запрос по-прежнему занимает много времени. Я пытаюсь использовать JOIN, потому что я слышал, что это обычно быстрее, но на самом деле не удается. Любой совет поможет!