Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> optymalizacja zapytania
zwierzołak
post 26.06.2010, 11:56:05
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 1
Dołączył: 25.03.2008

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


Witam,

Mam trzy tabele z danymi: `artykuly`, `artykuly_specjalne` (połączone po polu `id`) i `archiwum`. Muszę przenieść z `artykuly` do `archiwum` wszystkie rekordy, których niema w tabeli `artykuly_specjalne` i są starsze niż 2 miesiące.

Napisałem takie zapytanie:
  1. INSERT INTO `archiwum`(
  2. SELECT *
  3. FROM `artykuly`
  4. WHERE artykuly.id NOT IN (SELECT id FROM `artykuly_specjalne`)
  5. AND DATEDIFF(NOW(),artykuly.timeStamp) > 60
  6. )


dla 1000 rekordów działa to 4 minuty, trochę za długo biorąc pod uwagę, że rekordów są setki tysięcy. Jak zoptymalizować to zapytanie, żeby działało szybciej?

Ten post edytował zwierzołak 26.06.2010, 11:57:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
sebekzosw
post 26.06.2010, 13:09:01
Post #2





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


dorobić w 2 tabelach pole w których będzie 1 OR 0 - jeżeli 0 to nie jest w archiwum, a jeżeli 1 to jest w archiwum. w ogóle pozbyć się tabeli archiwum i dodać w zapytaniach odpowiedni warunek smile.gif
Go to the top of the page
+Quote Post
mkozak
post 29.06.2010, 10:44:50
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 21.03.2005

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


Cytat(zwierzołak @ 26.06.2010, 11:56:05 ) *
  1. INSERT INTO `archiwum`(
  2. SELECT *
  3. FROM `artykuly`
  4. WHERE artykuly.id NOT IN (SELECT id FROM `artykuly_specjalne`)
  5. AND DATEDIFF(NOW(),artykuly.timeStamp) > 60
  6. )


Zapytanie prawie dobre:

  1. INSERT INTO `archiwum`(
  2. SELECT *
  3. FROM `artykuly`
  4. WHERE artykuly.id NOT IN (SELECT id FROM `artykuly_specjalne` WHERE id = artykuly.id)
  5. AND DATEDIFF(NOW(),artykuly.timeStamp) > 60
  6. )


wtedy podzapytanie zwróci ci 1 lub 0 wyników, a nie X


--------------------
==============================================
Bo ja jestem Wróbelek Htmlek
==============================================
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:44