繁体   English   中英

在中等MySQL表(100万行)上的慢查询

[英]Slow Query on Medium MySQL Table (1 Million Rows)

我有一个约有100万行的MySQL表。 表名是dedict当我运行一个简单的查询,如:

select writtenform from dedict where length(writtenform)>5 
    and partofspeech <> 'abbreviation' order by id asc limit 50,1

查询大约需要1秒钟。

我有id列(自动增量)和writtenForm上的索引作为主键。

在下面,您可以看到explain dedict的结果:

Field               Type                Null    Key     Default     Extra
senseid             varchar(255)        NO      NULL    
writtenForm         varchar(255)        YES     MUL     NULL
languageIdentifier  varchar(255)        YES     NULL        
partOfSpeech        varchar(255)        YES     NULL
_index              int(11)             YES     NULL
writtenText         longtext            YES     NULL
lexiconid           varchar(255)        YES     NULL
id                  int(11)             NO      PRI     NULL        auto_increment

一定有问题。 我必须运行此查询5次才能显示一个网页,因此加载时间超过5秒。

请你帮助我好吗?

也许您可以优化属性长度。 有varchar(255)类型的5个属性。

无论如何,要想获得更快的速度,可以在insert / update语句上创建一个触发器,以将内容长度存储在另一个属性中。 因此,每次插入或更新一行时,触发器都会将长度存储在另一个整数类型的列中。

此外,您真的需要一次查询所有表吗?

您必须更改表的结构

like--senseid到integer writeForm的概念-应该使用此列来将索引添加到此bcozur来处理数据。

我已经重组了现有表并在架构中创建了更多表。 现在查询运行时间不到10毫秒。 新的dedict表如下所示(我取消了writtenform列,并更改了languageIdentifierpartOfSpeechlexiconid的类型):

Field               Type                Null    Key     Default     Extra
senseid             varchar(255)        NO      NULL    
languageIdentifier  tinyint             YES     NULL        
partOfSpeech        tinyint             YES     NULL
_index              int(11)             YES     NULL
writtenText         longtext            YES     NULL
lexiconid           tinyint             YES     NULL
id                  int(11)             NO      PRI     NULL        auto_increment

此外,我还创建了四个表加盟: writtenFormlanguageIdentifierpartOfSpeechlexiconid 这些表中的三个是真正的小( dedict_lang有2条记录, dedict_partOfSpeech有37条记录, dedict_lexicon有4个记录),而dedict_writtenForm只包含了id ,在writtenForm本身的长度writtenForm为100万条记录,但是索引正确。

暂无
暂无

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

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