繁体   English   中英

如何改善一百万条记录表上的MySQL查询

[英]How to Improve a MySQL Query on a 1 Million Record Table

我有100万条记录的MySQL表,其中有7列。 我有一个主键和一个全文索引列。 该表代表一个字典(磁盘上的大小约为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分钟)。

由于您使用的是=而不是全文搜索,您可以:

a)删除全文索引并用常规索引替换

要么

b)在全文索引旁边添加一个常规索引

我怀疑您的查询正在执行全表扫描,而不使用全文索引,因为您实际上并未在进行MATCH全文搜索

MySQL Workbench还包括一个Visual Explain图,以帮助解决此类问题。 有关更多信息,请参见标题为“ 使用Visual Explain提高查询性能 ”的相关教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM