MySQL-tietokannassa on n. puoli miljoonaa riviä ja nyt sinne lorahti rapiat 47000 riviä tuplasti. Miten nuo tuplat saa kätevimmin pois?
duplikaatit
3
1554
Vastaukset
- I.Proqatlis
1. Luo aputaulu, joka on alkuperäisen taulun kopio.
2. Siirrä alkuperäisen taulun sisältö aputauluun valitsemalla vain uniikit rivit alkuperäisestä taulusta. Malli:
insert into aputaulu (sarake1, sarake2, sarake3)
select distinct sarake1, sarake2, sarake3 from oikeataulu;
3. Aseta aputaulu alkuperäisen tilalle.
Millainen tietokanta sinulla oikein on?? Se ei ole relaatiomallin mukainen, jos sinne pystyy tekemään duplikaatteja. Yksi relaatiomallin perussäännöistä - koskien tiedon yhtenäisyyttä eli integriteettiä - on, että jokainen rivi taulussa on uniikki. Tämä hoidetaan valitsemalla sopiva avain, joka estää duplikaattien syntymisen!- Xcvt
"Se ei ole relaatiomallin mukainen, jos sinne pystyy tekemään duplikaatteja. Yksi relaatiomallin perussäännöistä - koskien tiedon yhtenäisyyttä eli integriteettiä - on, että jokainen rivi taulussa on uniikki. Tämä hoidetaan valitsemalla sopiva avain, joka estää duplikaattien syntymisen!"
Kyllä mielestäni relaatiomallin mukaiseen tauluun voi vahingossa tehdä duplikaatteja. Tai se mitä yleensä dublikaatilla tarkoitetaan kansantajuisesti, sanatarkastihan silloin ei ole kyseessä dublikaatti koska esim id on eri.
Tuo I.Proqatlisin ehdotus toimii vain jos sinulla ei ole samoja tietoja tauluissa ennen tuota vahinkoa. Mikäli on, niin silloin tuo poisto on vaikeeta koska sinun pitää tietää mitkä sinne todella kuuluu ja mitkä ei. Ehkä helpointa olisi tehdä DELETE kysely noilla tiedoilla mitkä tuli tuplasti ja sit tiedot uudestaan mikäli vain mahdollista.
Tietenkin jos tieto on jotenkin aikasidottua niin silloinhan I.Proqatlisin ehdotus toimii WHERE ehdoilla.
Siis
insert into aputaulu (sarake1, sarake2, sarake3, lisätty)
select distinct sarake1, sarake2, sarake3, lisätty from oikeataulu WHERE lisätty = '28-2-2007';
ja
insert into aputaulu (sarake1, sarake2, sarake3, lisätty)
select sarake1, sarake2, sarake3, lisätty from oikeataulu WHERE lisätty != '28-2-2007'; Xcvt kirjoitti:
"Se ei ole relaatiomallin mukainen, jos sinne pystyy tekemään duplikaatteja. Yksi relaatiomallin perussäännöistä - koskien tiedon yhtenäisyyttä eli integriteettiä - on, että jokainen rivi taulussa on uniikki. Tämä hoidetaan valitsemalla sopiva avain, joka estää duplikaattien syntymisen!"
Kyllä mielestäni relaatiomallin mukaiseen tauluun voi vahingossa tehdä duplikaatteja. Tai se mitä yleensä dublikaatilla tarkoitetaan kansantajuisesti, sanatarkastihan silloin ei ole kyseessä dublikaatti koska esim id on eri.
Tuo I.Proqatlisin ehdotus toimii vain jos sinulla ei ole samoja tietoja tauluissa ennen tuota vahinkoa. Mikäli on, niin silloin tuo poisto on vaikeeta koska sinun pitää tietää mitkä sinne todella kuuluu ja mitkä ei. Ehkä helpointa olisi tehdä DELETE kysely noilla tiedoilla mitkä tuli tuplasti ja sit tiedot uudestaan mikäli vain mahdollista.
Tietenkin jos tieto on jotenkin aikasidottua niin silloinhan I.Proqatlisin ehdotus toimii WHERE ehdoilla.
Siis
insert into aputaulu (sarake1, sarake2, sarake3, lisätty)
select distinct sarake1, sarake2, sarake3, lisätty from oikeataulu WHERE lisätty = '28-2-2007';
ja
insert into aputaulu (sarake1, sarake2, sarake3, lisätty)
select sarake1, sarake2, sarake3, lisätty from oikeataulu WHERE lisätty != '28-2-2007';Tarkennuksena, tietueita onkin n. 1,2 milj. Sarakkeita on 105. Jokainen tietue on erilainen lukuunottamatta niitä 47000 kpl jotka ovat siis kahteen kertaan. Kiitos tähän astisista neuvoista.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1003925
- 713185
Oletko koskaan stalkannut kaivattuasi?
Jos olet, miten olet stalkannut? Jäitkö kiinni? Onko hän stalkannut sinua? Jos on, miten suhtauduit?642982Karhuryhmä
Kellään tarkempaa tietoa miksi ja missä karhuryhmä ollut? Perheväkivaltaa vai huumeperintää kenties taas?232951- 622752
"Mielipide: Äärivasemmiston uhka on otettava vakavasti"
Demokratia näyttäisi olevan Halla-aholle enemmänkin välttämätön paha kuin tavoiteltava asia. Väkivallan ihannointi ja m312475Just alkoi ottamaan päähän
Miten voikin mennä näin, että koko päivän haluaa vain nähdä toisen ja lähelle. Sitten aivan salamana mieleen tulee kaikk192420Tapa jolla kohtelit minua viimeksi miellytti erityisesti
Osaat huomioida kauniisti ja katsot aina tilanteita yhteisen hyvän kannalta. Sitä arvostan erityisesti.812343- 322181
Raisionkaaren koira hyökkäys
Taas nähtiin että koiriin ei voi luottaa. Eilen illalla vapaana ollut koira hyökkäsi Raisionkaarella kolmen henkilön kim292131