[英]How to optimize a query with ORDER BY and FULLTEXT search?
有一張1200萬行的表格。
CREATE TABLE `shingles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`shingle` text NOT NULL,
`count` int(11) NOT NULL,
`used` tinyint(1) DEFAULT NULL,
`stop` tinyint(1) DEFAULT NULL,
`date` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `shingle` (`shingle`(255)) USING BTREE,
KEY `count` (`id`),
FULLTEXT KEY `shingle_fulltext` (`shingle`)
) ENGINE=InnoDB AUTO_INCREMENT=11707635 DEFAULT CHARSET=utf8
以下請求在20秒后執行
select `t1`.* from
(select * from `shingles`
where MATCH (shingle) AGAINST ('слово' IN BOOLEAN MODE)) as t2
inner join `shingles` as `t1` on `t1`.`id` = `t2`.`id`
order by `t1`.`count` desc limit 5
全文搜索結果越多,...
我該如何優化? 沒有“ order by”,它可以快速工作。
為什么要使用子查詢? 這不是同一件事嗎?
select s.*
from shingles s
where match (s.shingle) against ('слово' in boolean mode)
order by s.count desc
limit 5;
就是說,我認為您將無法顯着提高查詢的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.