簡體   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