【发布时间】:2016-08-18 12:29:12
【问题描述】:
我发布这个帖子是为了获得一些关于我的 SQL 查询性能的建议。
我实际上有 2 个表,一个称为 HGVS_SNP,大约有 44657169 行,另一个在 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'
【问题讨论】:
-
明显怀疑是您加入的字段类型不同,
hgvs_name似乎缺少索引。 -
这个
not like不走运,正如我所见,Compute字段上没有索引 -
在
Compute列上添加索引,如果没有必要避免LIKE -
对于
NOT LIKE,可以不用像“%tron%”这样的百分比来使用吗?
标签: mysql sql performance select join