Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 11. 11. 2015, 11:33:47
Podle návodu jsem zadal přímo do phpMyAdmin tento příkaz:
DELETE FROM t1 USING tabulka_result t1, tabulka_result t2 WHERE t1.num1=t2.num1 AND t1.num2=t2.num2 AND t1.num3=t2.num3 AND t1.id<t2.id V tabulce mám jen sloupečky id (primary key), num1, num2, num3 a count. Všechny sloupečky jsou integer, sloupečky num1, num2, num3 a count jsou jen dvouciferné hodnoty. Počet řádků je v databázi asi 200 tis. přičemž duplicit by mělo být 11 na jeden unikátní řádek. Je možný, že tohle trvá víc než půl hodiny? Zadal jsem to a pořád mi to ukazuje Nahrávám.. |
||
juriad Profil |
#2 · Zasláno: 11. 11. 2015, 11:57:28
quatzael:
Ano je to možné. Máš na tabulce nějaké indexy? Jako ideální vypadá kombinovaný index nad (num1, num2, num3), jinak databáze musí projít všech 40 000 000 000 kombinací a to trvá. Další možností je položit dotaz pro vytvoření nové tabulky: CREATE TABLE tabulka_result_nova AS SELECT * FROM tabulka_result t JOIN ( SELECT MIN(id) FROM tabulka_result GROUP BY num1, num2, num3 ) x ON x.id = t.id |
||
quatzael Profil |
#3 · Zasláno: 11. 11. 2015, 12:43:12
juriad:
Aha. A nešlo by nějak udělat, aby request nechal první řádek po něm dalších 11 smazal, potom zase jeden nechal atd..?? Já mám ty data v tabulce takhle hezky setřízený. To by mělo být rychlý, ne? Ale jak to udělat?? |
||
Kajman Profil |
Jak dlouho trvá nalezení těch řádků na smazání?
SELECT Count(DISTINCT t1.id) smazat FROM tabulka_result t1, tabulka_result t2 WHERE t1.num1 = t2.num1 AND t1.num2 = t2.num2 AND t1.num3 = t2.num3 AND t1.id < t2.id Máte na tabulce nějaké další indexy kromě id? Na tuto úlohu by se hodil index přes tři sloupce (num1,num2,num3). |
||
quatzael Profil |
Kajman:
Nevím, je to zatím seklý. Nemůžu tu tabulku ani smazat ani opravit.. quatzael: žádný další indexy tam nejsou.. jen ty řádky, který jsem tady uvedl.. Je možný, že je to celý seklý a nejde ta tabulka smazat proto, že se pořád vykonává ten problematickej request? Nejde to nějak ukončit? quatzael: „Nejde to nějak ukončit?“ Už to mám!! show processlist
|
||
Kajman Profil |
#6 · Zasláno: 11. 11. 2015, 13:23:53
Ano je možné, že nalezení řádků a tedy smazání tvrá velice dlouho a tabulka je po tu doba zamknuta či zahlcena.
Pokud jste administrátorem databázového serveru, měl byste mít možnost proces killnout. |
||
quatzael Profil |
#7 · Zasláno: 11. 11. 2015, 13:26:17
Kajman [#4]:
Co tam v tom requestu dělá to "smazat"?? Nemá tam být například "AS smazat"?? |
||
tiso Profil |
#8 · Zasláno: 11. 11. 2015, 13:27:06
quatzael: AS je nepovinné
|
||
quatzael Profil |
Kajman:
„Pokud jste administrátorem databázového serveru, měl byste mít možnost proces killnout.“ Už jsem přišel na to jak (bylo mi porazeno): show processlist !!tiso: „AS je nepovinné“ Aha Kajman [#4]: Každopádně v tom requestu asi má být DISTINCT t1.id , ne? t.id to nebere..
|
||
Časová prodleva: 8 let
|
0