Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Duży problem z dużą bazą
budda1989
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 30.06.2008

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


Witam serdecznie, opis sytuacji:

posiadam tabelę z prezentacjami, oraz inną tabelę ze zdjęciami do prezentacji.
dużo prezentacji wygasło, a ich zdjęcia zaśmiecają mi tabelę zdjęć tworząc zestaw powyżej pół miliona rekordów.

Chciałbym odchudzić bazę, jednak mam duży problem. Napisałem sobie skrypt, który pobiera z tabeli prezentacje ID prezentacji których status to zero i usuwa row z tabeli zdjęcia. Jednak skrypt działa tak wolno, że musiałbym poczekać z miesiąc aż skonczy się to robić.

Zastanawiam się nad napisaniem jednego zapytania sql które:
1)z tabeli prezentacje pobiera id_prezentacje gdzie status = 0
2) z tabeli zdjecia usówa rekordy w których id_prezentacje = pobrane ID

podejmowałem próby z zapytaniami zagnieżdżonymi jednak nie udało mi się rozwiązać problemu.

przykład zapytania które testowałem:

  1. UPDATE `zdjecia` SET STATUS=0 WHERE `id_prezentacja` = (SELECT `id_prezentacja` FROM `prezentacja` WHERE STATUS=0)


zgłasza mi błąd

- Subquery returns more than 1 row

Nie wiem naprawdę jak to napisać, i co więcej, czy przy takiej ilosci rekordów ( prezentacje = 300 000, zdjecia = 500 000 ) da się to zrobić 1 zapytaniem

Uprzejmie proszę o pomoc

PS. urządza mnie jedno z dwóch rozwiązań, update zdjęcia z nieaktywnej prezentacji i oznaczenie jego status=0 LUB usunięcie zdjęć z nieaktywnych prezentacji (IMG:style_emoticons/default/smile.gif)

Ten post edytował budda1989 28.07.2012, 20:40:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
BaN
post
Post #2





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


Jakie dokładnie zapytanie wykonujesz, że masz taki błąd? Jeżeli te które podałeś poprzednio:
  1. SELECT `id_prezentacja`
  2. FROM `prezentacja`
  3. WHERE NOT EXISTS (SELECT 1 FROM `prezentacja` WHERE `prezentacja`.`id_prezentacja`=`zdjecia`.`id_prezentacja` AND `prezentacja`.`status`=1)

to logiczne, że jest błąd, bo dwa razy podałeś tabelę prezentacja, tabela zdjecia nie jest uwzględniana, więc nie może być warunku z odwołaniem do pola tej tabeli, podałem przecież przykłady, które powinny działać
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 23:36