簡體   English   中英

提高MySQL的查詢性能

[英]Improve query performance in MySQL

我發布這個帖子是為了對我的SQL查詢的性能提出一些建議。 我實際上有兩個表,一個用大約44657169行調用HGVS_SNP ,另一個在run表上調用,平均有2000行。 當我嘗試更新我的run table字段注釋時,執行查詢需要花費很多時間。 我想知道是否有任何方法來增加我的SQL查詢。

HGVS_SNP結構表:

+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| snp_id    | int(11)     | YES  | MUL | NULL    |       |
| hgvs_name | text        | YES  |     | NULL    |       |
| source    | varchar(8)  | NO   |     | NULL    |       |
| upd_time  | varchar(32) | NO   |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+

我的運行表具有以下結構:

+----------------------+--------------+------+-----+---------+-------+
| Field                | Type         | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+-------+
| ID                   | varchar(7)   | YES  |     | NULL    |       |
| Reference            | varchar(7)   | YES  | MUL | NULL    |       |
| HGVSvar2             | varchar(120) | YES  | MUL | NULL    |       |
| Comment              | varchar(120) | YES  |     | NULL    |       |
| Compute              | varchar(20)  | YES  |     | NULL    |       |
+----------------------+--------------+------+-----+---------+-------+

這是我的查詢:

UPDATE run
INNER JOIN SNP_HGVS 
ON run.HGVSvar2=SNP_HGVS.hgvs_name
SET run.Comment=concat('rs',SNP_HGVS.snp_id) WHERE run.Compute not like 'tron'

我猜你自己加入一個帶有VARCHAR(120)列的文本列,你真的不需要一個文本列。 將其設為VARCHAR,以便對其進行索引

ALTER TABLE `HGVS_SNP` modify hgvs_name VARCHAR(120);

ALTER TABLE `HGVS_SNP` ADD KEY  idx_hgvs_name (hgvs_name);

大型桌子需要一段時間

現在你的JOIN應該快得多,同時在計算列上添加一個索引

ALTER TABLE `run` ADD KEY  idx_compute  (compute);

並且LIKE是不必要的,改為

WHERE run.Compute != 'tron'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM