二级关键词搜索的索引结构

Posted

技术标签:

【中文标题】二级关键词搜索的索引结构【英文标题】:Index structure for secondary keyword search 【发布时间】:2017-12-21 03:24:13 【问题描述】:

我有一个表格(文章),结构如下:

id int(10) unsigned not_null auto_increment
title varchar(32)
system_id int(10) unsigned default 0
last_update int(10) unsigned default 0

为该查询提供最佳性能的表的推荐索引结构是什么:

"SELECT * FROM Articles where system_id = ID order by last_update desc"

【问题讨论】:

system_idlast_update 上的索引应该会提高性能。 【参考方案1】:

正如讨论的 here ,从 = 列 (system_id) 开始,然后是“范围”列 (last_update):

INDEX(system_id, last_update)

【讨论】:

【参考方案2】:

我将添加这两个索引并检查 EXPLAIN 计划以查看使用了哪些。 mysql 有时会选择排序索引而不是过滤索引,因此在某些情况下第二个可能会更好。

ALTER TABLE `Articles` ADD INDEX `articles_index_1` (system_id, last_update);
ALTER TABLE `Articles` ADD INDEX `articles_index_1` (last_update);

【讨论】:

以上是关于二级关键词搜索的索引结构的主要内容,如果未能解决你的问题,请参考以下文章

67.倒排索引结构理解

Elasticsearch的倒排索引是什么?

SEO优化:网站怎么在搜索引擎获取更好的排名?

Lucene 如何对索引进行搜索?

innodb 存储引擎为啥要用一个自增的主键

博客园使用技巧-拟标题-搜索技巧