Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Update z dwóch tabel - czas
czaq
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 19.08.2008

Ostrzeżenie: (0%)
-----


1 tabela: tab_gl:

+-------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| IdCzesci | varchar(20) | NO | MUL | NULL | |
| SKU | varchar(20) | NO | | NULL | |
| Nazwa | varchar(50) | NO | | NULL | |
| N | varchar(50) | NO | | NULL | |
| MarkaPolaczone | varchar(50) | NO | | NULL | |
| Marka | varchar(50) | NO | | NULL | |
| Model | varchar(50) | NO | | NULL | |
| PrzodTyl | varchar(50) | NO | | NULL | |
| PT | varchar(50) | NO | | NULL | |
| LewaPrawa | varchar(50) | NO | | NULL | |
| OkresZastosowania | varchar(50) | NO | | NULL | |
| Producent | varchar(50) | NO | | NULL | |
| Podmodel | varchar(50) | NO | | NULL | |
| Informacjeop | varchar(100) | NO | | NULL | |
| Cena | float | NO | | NULL | |
+-------------------+--------------+------+-----+---------+-------+


2 tabela: ceny:
mysql> show columns from ceny;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| IdCzesci | int(20) | NO | MUL | NULL | |
| Cena | float | NO | | NULL | |
+----------+---------+------+-----+---------+-------+
2 rows in set (0,00 sec)


kat_gl zawiera ok 60000 rekordów, a ceny ok 120000 rekordów

Chce uaktualnić ceny po polu IdCzesci (część wspólna)
Zapytanie:
  1. UPDATE `kat_gl`,`ceny`
  2. SET `kat_gl`.`Cena`=`ceny`.`cena`
  3. WHERE `kat_gl`.`IdCzesci` |

Wykonuje się już dwie godziny i nadal trwa ze statusem: Sending data
Czy to możliwe że trwa to tak długo ? Co w przypadku gdy zwiększy mi się liczba rekordów dwukrotnie ? A może złe zapytanie ?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




yyyy.... a to:
WHERE `kat_gl`.`IdCzesci`
to niby co wg. ciebie ma robić? Bo teraz panie kolego właśnie zajeżdzasz baze na śmierc smile.gif (60000*120000 = całkiem sporo smile.gif)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sephirus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


2 godziny? Trochę za dużo...

Już szybciej chyba wykona Ci się po prostu:

  1. UPDATE kat_gl SET Cena = (SELECT cena FROM ceny WHERE IdCzesci = kat_gl.IdCzesci);


Ale ... tak w ogóle to po co to robisz? Przecież możesz dla danej części cenę pobierać z tabeli cena a nie z tabeli kat_gl... To jest dublowanie danych :/


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
2 godziny? Trochę za dużo...
Zrobił iloczyn kartezjański to ma długo. W where powinien połączyć obie tabele po polu a nie dać nic nie robiący warunek


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
czaq
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 19.08.2008

Ostrzeżenie: (0%)
-----


Właśnie o to chodzi że docelowo wszystkie dane muszę mieć w jednym pliku, dopiero jak zaimportuję wszystko będę mógł się bawić inaczej. Dziękuję smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 06:13