Autor | Zpráva | ||
---|---|---|---|
Parsek96 Profil * |
#1 · Zasláno: 1. 9. 2015, 17:36:50
Ahoj,
mám takový dotaz, zdali je toto možné provést pomocí query v MySQL, aniž bych zapojil třeba php. Tak tedy, mám dvě tabulky, jedna má cca 300 tisíc řádků, mimo jiné v nich sloupce "ID", "ID2" (zde prázdné), "unikatninazev" a "porovnano", pak mám další tabulku, kde jsou jen a pouze "ID2" a "unikatninazev". Co bych potřeboval, jest nějakým způsobem tyto dvě tabulky porovnat a výsledkem by bylo, že v tabulce s mnoha daty, tam kde by se shodoval unikátní název u řádku, tak by políčko ID2 mělo hodnotu ID2 z další tabulky a porovnano = 1. Snad jsem tu situaci popsal srozumitelně, děkuju předem za jakékoliv návrhy a rady :-) |
||
Tori Profil |
UPDATE se spojením tabulek a využitím části WHERE EXISTS
↓ lepší varianta. Holt ten rok bez programování je znát. |
||
juriad Profil |
Viz: sqlfiddle.com/#!9/e90e2/1
Ten update je triviální: UPDATE tabulka1 AS t1 JOIN tabulka2 AS t2 ON t1.unikatninazev = t2.unikatninazev SET t1.ID2 = t2.ID2, t1.porovnano = 1; Doporučuji index na sloupcích unikatninazev, ale ten tam možná už kvůli unikátnosti máš. |
||
Parsek96 Profil * |
#4 · Zasláno: 2. 9. 2015, 09:20:46
juriad:
mockrát ti děkuju! ještě se dovolím zeptat, měl bych to nějak dělat po kouskách s limitem? Nebo to mohu pustit a nechat to projet celé naráz? Kvůli rychlosti, či abych neshodil DB? |
||
juriad Profil |
Když budeš mít ty indexy, tak bych se nebál spuštění celého najednou. Ale klidně si to můžeš otestovat na jiném prostředí (ty dvě tabulky si exportuj a přenes).
Při existenci indexů je to lineární operace (indexy jsou uchovávané seřazené podle abecedy), takže to prostě bude jako bys měl dva slovníky a jel prstem v obou zároveň a hledal, která slova jsou v obou. Bez indexů by to bylo, jako mít dvě obyčejné knihy a hledat slova, která jsou společná. |
||
Parsek96 Profil * |
#6 · Zasláno: 3. 9. 2015, 15:59:09
juriad:
mockrát ti děkuju, vytáhl jsi mi fakt velký trn z paty! indexy jsem tam měl, a tak celá operace zabrala max 5 vteřin... dělat to přes php, tak se s tím mamlasím ještě pozítří |
||
Časová prodleva: 9 let
|
0