簡體   English   中英

如何使用ORDER BY和FULLTEXT搜索優化查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM