我继承了使用 MySQL 和 PHP 构建的自定义 CMS 的代码库,它使用全文索引在内容(文本)字段中进行搜索。在分析数据库结构时,我发现所有相关表都是按以下方式创建的(简化示例):
CREATE TABLE `stories` (
`story_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`headline` varchar(255) NOT NULL DEFAULT '',
`subhead` varchar(255) DEFAULT NULL,
`content` text NOT NULL,
PRIMARY KEY (`story_id`),
FULLTEXT KEY `fulltext_search` (`headline`,`subhead`,`content`),
FULLTEXT KEY `headline` (`headline`),
FULLTEXT KEY `subhead` (`subhead`),
FULLTEXT KEY `content` (`content`)
) ENGINE=MyISAM;
如您所见,全文索引是以通常的方式创建的,但随后也会单独添加每一列,我相信这会创建两个不同的索引。
我联系了之前的开发人员,他说这是创建全文索引的“正确”方法,但根据我在互联网上找到的每个示例,没有这样的要求,这就足够了:
CREATE TABLE `stories` (
`story_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`headline` varchar(255) NOT NULL DEFAULT '',
`subhead` varchar(255) DEFAULT NULL,
`content` text NOT NULL,
PRIMARY KEY (`story_id`),
FULLTEXT KEY `fulltext_search` (`headline`,`subhead`,`content`)
) ENGINE=MyISAM;
该表有超过 80,000 行,并且变得越来越难以管理(整个数据库接近 10GB),所以我想删除任何不必要的数据。
提前谢谢了。