01. november 2008 - 13:20Der er
10 kommentarer og 1 løsning
sammensæt to tabler er langsomt
Hej,
Jeg ønsker at sammensætte to tabler.
tabel 1:
ID navn 1 Rune 2 Hans ...
tabel 2:
ID efternavn 1 Jensen 2 Hansen ...
Dettte gør jeg med følgende steps:
Tilføj søjle til tabel1 1. ALTER TABLE tabel1 ADD COLUMN efternavn; 2. UPDATE table1 SET efternavn = tabel2.efternavn where ID=tabel2.ID;
Problemet er at step 2 tager meget lang tid (en hel aften). En alternative method er at skrive tabel 1 og 2 ud som text file merge de to text filer (tager 20 sekunder med eget program) og derefter uploade de to merged tabler. Den sidst løsning kræver mere arbejde.
Så mit spørgsmål er om dette kan gøres hurtigere udelukkende ved brug af MySQL?
Efter at jeg har sat begge ID til primary keys køre det ganske rigtigt hurtigt men af en eller anden grund bliver efternavn ikke opdateret og forbliver null. Kan ikke lige på nuværende tidspunkt se hvad jeg gør galt.
UPDATE annotation_matrix SET annotation_matrix.gene = (select gene from temp where temp.ID=unigene);
Min oprindelig syntax med rigtig data:
update annotation_matrix, temp set annotation_matrix.gene=temp.ID where annotation_matrix.unigene=temp.gene;
Jeg bruger MySQL query browser og kan normalt godt se hvis der er fjel. Begge syntax ovenfor giver følgende beskeder:
Query is beeing executed... Query returened no resultset
Følgenede er fra MySQL documentation:
It took me a few minutes to figure this out, but the syntax for UPDATING ONE TABLE ONLY using a relationship between two tables in MySQL 4.0 is actually quite simple:
update t1, t2 set t1.field = t2.value where t1.this = t2.that;
Jeg beklager - det var en dårlig dag i går. Jeg var sikker på at jeg allerede havde checkede for små forskelle i primary keys for de to tabeller. Men nu da du nævnte muligheden chekkede jeg en ekstra gang og ja der var narturligvis en space til forskel.
Du fortejner points for hjælpen.
Jeg beklager ulejligheden.
Konklussionen for mig er at MySQL faktisk updatere ligeså hurtigt som mit eget program når jeg laver updateringen i MySQL rigtigt.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.