【发布时间】:2016-05-17 23:46:41
【问题描述】:
我有一个非常大的表(4M+ 行),磁盘空间超过 40Gb(14Gb 数据和 28Gb 索引)。我需要在组合和分离的多个字段上进行全文搜索,这意味着我需要能够同时在单列和多列上进行全文搜索,如下所示:
用于组合搜索
SELECT `column_a`, `column_b` FROM `table_1` WHERE MATCH (`column_a`, `column_c`, `column_x`) AGAINST ('+$search_quesry*' IN BOOLEAN MODE);
单独搜索
SELECT `column_a`, `column_b` FROM `table_1` WHERE MATCH (`column_a`) AGAINST ('+search_query*' IN BOOLEAN MODE);
SELECT `column_a`, `column_b` FROM `table_1` WHERE MATCH (`column_c`) AGAINST ('+search_query*' IN BOOLEAN MODE);
SELECT `column_a`, `column_b` FROM `table_1` WHERE MATCH (`column_x`) AGAINST ('+search_query*' IN BOOLEAN MODE);
这是我的问题。我已经将以下两个集合定义为索引,这会导致 24Gb+ 磁盘空间。是我做对了还是一套就够了?
ALTER TABLE `table_1` ADD FULLTEXT (`column_a`, `column_c`, `column_x`);
和/或
ALTER TABLE `table_1` ADD FULLTEXT (`column_a`);
ALTER TABLE `table_1` ADD FULLTEXT (`column_c`);
ALTER TABLE `table_1` ADD FULLTEXT (`column_x`);
或
ALTER TABLE `table_1` ADD FULLTEXT (`column_a`);
ALTER TABLE `table_1` ADD FULLTEXT (`column_c`, `column_x`);
这主要是为了减少所需的磁盘空间以及更好的性能。任何更好的建议都非常受欢迎。谢谢:)
附: column_a 在索引组合和分离时的基数似乎不同。
【问题讨论】:
标签: mysql full-text-search multiple-columns myisam full-text-indexing