Eu tenho um índice de texto completo em uma tabela para as articles
colunas content
etitle
keywords
Ao fazer a busca em cada uma das colunas, assim select count(1) from articles where match(content,title,keywords) against ('cats' in boolean mode)
, os resultados demoram entre 12 e 15 segundos.
Mas fazer as colunas individualmente ( select count(1) from articles where match(content) against ('cats' in boolean mode)
) normalmente leva menos de 50 ms.
Por que pesquisar as 3 colunas leva mais de 100 vezes mais do que todas elas separadamente?
Esta não é uma questão de como torná-lo mais rápido, mas sim de perguntar "por que é tão lento?"
Tabela/Índices
id int(30) PK auto_increment
url varchar(1024)
title varchar(255) FULLTEXT
content text FULLTEXT
keywords varchar(1024) FULLTEXT
comments text
created_date int(11)
posted_date int(11)
explica
Este primeiro é a consulta de várias colunas:
Esta segunda é a nova consulta muito mais rápida que executa as 3 colunas separadamente e depois as une (o cache da consulta foi limpo).
Ordem das Colunas de Texto Completo
Usar/Forçar Índice com Explicar