Ich poste diesen Thread, um einige Ratschläge bezüglich der Leistung meiner SQL-Abfrage zu erhalten. Ich habe eigentlich 2 Tabellen, eine, die HGVS_SNP
mit etwa 44657169 Zeilen und eine andere auf run
Tabelle, die einen Durchschnitt von 2000 Zeilen hat aufgerufen. Wenn ich versuche, Feld Kommentar meiner run table
zu aktualisieren, dauert es viel Zeit, die Abfrage durchzuführen. Ich habe mich gefragt, ob es irgendeine Methode gibt, um meine SQL-Abfrage zu erhöhen.Verbessern Sie die Abfrageleistung in MySQL
Struktur der HGVS_SNP Tabelle:
+-----------+-------------+------+-----+---------+-------+
| 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 | |
+-----------+-------------+------+-----+---------+-------+
Meine Lauftabelle hat die folgende Struktur:
+----------------------+--------------+------+-----+---------+-------+
| 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 | |
+----------------------+--------------+------+-----+---------+-------+
Hier ist meine Frage:
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'
Der obviuos verdächtigen ist, dass die Felder, denen Sie beitreten, sich unterscheiden t types und 'hgvs_name' scheint keinen Index zu haben. –
dieses 'nicht mögen' ist nicht glücklich, und wie ich sehe, gibt es keinen Index auf' Compute' Feld – vaso123
addieren Sie Index auf 'berechnen' Spalte und vermeiden 'LIKE' wenn nicht notwendig ist – mitkosoft