У меня есть таблица в MySQL, которая содержит более 50 миллионов строк.Ниже приведена структура таблицы:
CREATE TABLE `links` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`loc` text NOT NULL,
`lastmod` datetime NOT NULL,
`changefreq` varchar(15) NOT NULL,
`priority` float NOT NULL,
`isdownloaded` tinyint(1) NOT NULL,
`mainrepoid` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `locfulltext` (`loc`)
) ENGINE=MyISAM AUTO_INCREMENT=11426345 DEFAULT CHARSET=latin1
Полный текст включен в поле loc .Мне нужно получить все строки, содержащие имя и детали слова.Следующий запрос не дал ожидаемых результатов:
SELECT *
FROM links
WHERE
MATCH (
loc
)
AGAINST (
'name +details' IN BOOLEAN MODE
)
, поэтому я вынужден использовать следующий запрос:
SELECT id, loc
FROM links
WHERE
loc like '%name%' and
loc like '%details%'
Есть ли лучшая альтернатива?