Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Specyficzna baza danych...
rsobczuk
post
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 20.10.2002
Skąd: Kraków

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


Witam,
mam następujący problem.
Posiadam w bazie danych kilka milionów rekordów. Są to informacje o osobach (title, imię, nazwisko, adres, kod pocztowy, email ...). Jak napisałem takich rekordów jest kilka milionów.
Zdarza się, że przychodzą do mnie ludzie z plikami w Excellu. W pliku jest np 60 000 rekordów.
Proszą mnie, żeby przypisać do osób w pliku Excell adresy email z bazy danych łącząc te 2 źródła informacji po:
Title: takie jak Mr, Ms, Miss itp...
Nazwisko
Kod pocztowy

Szukanie takich informacji trwa piekielnie długo.
Jak najlepiej zaprojektować bazę danych i jak przechowywać w niej dane - jak zaindeksować tabele, żeby wyszukiwanie trwało dość szybko.

Dzięki za wszystkie propozycje.

Rafał
Go to the top of the page
+Quote Post
najtje
post
Post #2





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.10.2007

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


Jeśli ktoś prosi cię np. żeby przypisać adresy email dla osoby
o nazwisku X imieniu Y i tytule Z
to musisz na nazwisku, imieniu i tytule mieć nałożony indeks. Ogólnie to na wszystkie atrybuty po których łączysz tę tabelę z excel'a i tablę bazy danych.

Jeżeli masz inne zestawy atrybutów po których łączysz tzn. ktoś przychodzi i mówi żeby wypisać te adresy email po tytułach i nazwiskach tylko wtedy musisz mieć indeks na atrybutach tytuł i nazwisko.

Nie wiem jak można połączyć bezpośrednio arkusz excela i bazę danych ale chyba da się zaimportować dane z arkusza do mysql. Napewno potrafi to robić OpenOffice a w msoffice napewno da się skorzystać z ODBC
Go to the top of the page
+Quote Post
Indeo
post
Post #3





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Tak jak powiedział przedmówca - indeksy to podstawa. Najsilniejsze jednak są indeksy unikatowe - są najszybsze. Dlatego jesli tylko wiemy o jakimś polu lub kombinacji pól że może być unikalna - warto założyć na takiej grupie indeks unikalny.

Nie wiem w jaki sposób wymieniasz dane między excelem a mysql. ODBC jest wolny - można wykorzystać inne sposoby. Nie wiem też ile jednorazowo danych wrzucasz do excela. Ale chyba nie tak dużo bo excell ma ograniczenie wielkości arkusza. Ja tez mam miliony rekordów w kilkudziesięciu powiązanych tabelach - łącznie 3GB danych i uwierz mi wszystko hula szybko.
Wykorzystywałem wiele metod. Najprostsza jest taka: piszesz w php stronę która wyświetla tabele HTML z danymi wynikowymi. Następnie w skrypcie php przed wysłaniem html do przeglądarki wysyłasz nagłówek informujący o typie pliku - arkusz excel. Można wymusić zapisanie pliku wynikowego lub otwarcie go w przeglądarce. Excel świetnie otwiera tabele htmlowe. Jeszcze inny sposób to wystawienie interfejsu XML - w nowych pakietach msoffice są wbudowane narzędzia obsługi list XML - nawet do worda można wstawić dynamiczna tabele.
Go to the top of the page
+Quote Post

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: 19.12.2025 - 21:39