Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP + SQL - spora baza, jakie zapytanie
willi123
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.03.2010

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


Witam

Mam taki o to problem posiadam, posiadam bazę a w niej 2 tabele każda po ok 900 tys. rekordów. Ich struktura jest identyczna: Id, Nazwa, Miejsce. Muszę teraz obie tabele porównać a mianowicie sprawdzić która nazwa miała największy wzrost(zakładając np. że szukam wzrostów tylko powyżej pewnej liczby np 100). Czyli w sumie muszę porównać wszystkie nazwy w obu tabelach i ich miejsca. Jak to zrobić przy tak dużych bazach żeby nie zapchać serwera ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kocurro
post
Post #2





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


  1. SELECT a.* FROM tabela1 AS a
  2. INTERSECT
  3. SELECT b.* FROM tabela2 AS b


To Ci da różnice pomiędzy dwoma tabelami.

  1. SELECT COUNT(c.miejsce) AS count, c.nazwa FROM
  2. (
  3. SELECT a.* FROM tabela1 AS a
  4. INTERSECT
  5. SELECT b.* FROM tabela2 AS b
  6. ) AS c GROUP BY c.nazwa ORDER BY count DESC


A to powinno dać informacje o największej zmianie grupując po nazwie:)

A jeśli chodzi o drugą część pytania - jak to zrobić by nie zapchać serwera ... najprościej zainwestować w dobrze skonfigurowany serwer - wtedy nie da rady go łatwo zapchać a takie zapytanie pójdzie raz dwa.

Oczywiście nie podałeś dokładnej struktury tabel więc zakładam, że zawierają indeksy - jeśli nie to koniecznie musisz utworzyć odpowiednie indeksy.

Pozdrawiam,
Łukasz

PS: Nie ten dział
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: 15.10.2025 - 05:48