Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie duzych tablic
sivyer
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 17.04.2002
Skąd: Wrocław

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


Witam,

Mam nastepujacy problem. Musze posortowac dane z pliku CSV wedlug zadanej uprzednio kolumny (zawsze bedzie to liczba). Mozna to latwo i szybko zrobic, jesli linijek w pliku jest nawet do kilkunastu/kilkudziesieciu tysiecy, korzystajac z chocby asort() czy arsort().

W moim przypadku pliki beda mialy srednio po kilkaset tysiecy linijek, a czasem nawet grubo powyzej 1 mln, wiec rozwiazanie oparte o tablice, mimo ze nadal wykonuje sie w akceptowalnym czasie (dla 1mln ok 190sek), to po prostu zabija sprzet.

Przykladowa struktura pliku CSV:

Kod
Kolumna 1;Kolumna 2;Kolumna 3;Kolumna 4;Kolumna 5


I zalozmy ze chce posortowac te dane rosnaco po kolumnie 4. Ma ktos jakis pomysl jak zrobic to optymalnie (moze byc nawet ze strata czasowa, byleby nie pozeralo zbyt wielu zasobow serwera)?

Z gory dziekuje za wszelka pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wlq
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 5.07.2006

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


moze tutaj wstawic sortowanie metoda sladu? dodajesz do bazy danych nowe pole, i przy dodawaniu kolejnych rekordow odpowiednio je zmieniasz, tak, zeby liczby w sladzie odpowiadaly odpowiadaly posortowaniu. Np:

  1. <?php
  2. numer_id | numer_slad
  3. | 3
  4. | 4
  5. | 2 
  6. | 1
  7. ?>


w rezultacie, jak bedzie pobieral dane sladem, bedziesz mial nastepujace numery id: 4, 3, 1, 2
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: 8.10.2025 - 20:19