![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 26.01.2008 Ostrzeżenie: (0%)
|
Natknąłem się na pewien problem związany z systemem wysyłania wiadomości. Chciałbym dodać na stronę opcję "wiadomość do wszystkich" ale zakładając że na stronie byłoby np. 1000 kont zwykła pętla wykonałaby się 1000 razy za każdym razem dodajć rekord dla poszczególnego konta. Jak zmienić taką pętlę na coś wydajniejszego?
Baza danych: MySQL Nie mogę oczywiście zrobić oddzielnej tabeli na grupowe wiadomości, bo co się stanie jak jedna osoba to np. usunie? Druga już nie będzie widziała wiadomości. Każdy musi mieć swoją. Z góry dziękuję za wszelkie pomysły. |
|
|
|
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Możesz robić INSERTy w paczkach, tj. zamiast:
zrobić tak (przykładowa paczka zawierająca po 3 wpisy:
Dzięki temu z 6 zapytań robią się 2. Pamiętaj tylko aby nie przesadzić z liczbą danych wrzucanych za jednym zamachem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 21 Dołączył: 1.09.2006 Skąd: Edinburgh Ostrzeżenie: (0%)
|
Jesteś pewny, że taka funkcjonalność to dobry pomysł? Skoro już musisz, zakładając, że tabela z wiadomościami wygląda np tak:
id wiadomosci | id uzytkownika | tresc wiadomosci (uproszczona wersja), to osobiście załadowałbym wszystkie ID użytkowników + treść wiadomości do pliku tekstowego i wrzucił to do bazy za pomocą LOAD DATA INFILE |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 30.12.2007 Ostrzeżenie: (10%)
|
Cytat Pamiętaj tylko aby nie przesadzić z liczbą danych wrzucanych za jednym zamachem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Moglbys to rozwinac? Ile to jest za duzo i od czego to zalezy? |
|
|
|
Post
#5
|
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Ciężko powiedzieć. Zależy jakie dane będziesz wrzucał i do ilu pól. Różnica będzie między liczbą do jednego pola, a np. wypracowaniami z polskiego do 10 pól (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wydaje mi się, że taka optymalna paczka powinna zawierać się w przedziale <5, 10> INSERTów.
|
|
|
|
Post
#6
|
|
|
Grupa: Nieautoryzowani Postów: 92 Pomógł: 15 Dołączył: 21.10.2006 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#7
|
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 |
Taki przypadek jak Twoj mozna zrobic jednym insert'em. W skrócie to wyglada tak...
Gdzie VALUES, gdzie nawiasy? |
|
|
|
Post
#8
|
|
|
Grupa: Nieautoryzowani Postów: 92 Pomógł: 15 Dołączył: 21.10.2006 Ostrzeżenie: (0%)
|
VALUES podajesz jak piszesz konkretne wartosci a tu wartoscią (wartosciami) jest wynik zapytania czyli dwie kolumny (tyle ile trzeba do inserta) z wierszami w ktorych w pierwszej kolumnie jest users_id wszystkich uzytkownikow a w drugiej kolumnie w kazdym wierszu zawsze jest ta sama wiadomosc.
Sprawdz sam na jakims przykladzie... Ten post edytował heaven 10.02.2008, 20:38:42 |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 10:23 |