我有一个包含7列的100万条记录MySQL表。我有一个主键和一个全文索引列。该表代表字典(磁盘大小~300 MB)。
列是:
'id', 'int(11)', 'NO', 'PRI', NULL, 'auto_increment'
'writtenForm', 'varchar(255)' - Fulltext index
'languageIdentifier', 'varchar(255)'
'partOfSpeech', 'varchar(255)'
'_index', 'int(11)'
'writtenText', 'longtext'
'lexiconid', 'varchar(255)'
当我运行此查询时:
select * from tablename where writtenForm = 'herstellen'
我在4,5秒内得到了结果。对我来说太过分了,因为这个表很简单,查询没有连接,我在PC上本地运行它。
我注意到全文索引没有排序规则。这可能是个问题吗?如果是,请告诉我如何将排序规则添加到索引中。
我还注意到,我对表格本身进行的任何更改(添加列,删除列)都需要超过5分钟(最后一列删除大约需要15分钟)。
答案 0 :(得分:5)
由于您使用的是=而不是全文搜索,您可以:
a)删除全文索引并将其替换为常规索引
或
b)在全文索引
旁边添加常规索引我怀疑你的查询正在进行全表扫描而不使用全文索引,因为你实际上没有进行MATCH全文搜索
答案 1 :(得分:0)
MySQL Workbench还包含一个Visual Explain图来帮助解决这些问题。有关其他信息,请参阅标题为Using Visual Explain to improve query performance.
的相关教程