Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: 2 zapytania, ktore szybsze?
Forum PHP.pl > Forum > Bazy danych > MySQL
wojto
Mam dwa pytania:
pierwsze: chce pobrac ilosc rekordow z tabeli i jakie zapytanie do mysql'a jest szybsze:
[sql:1:b80023d511]
$row=mysql_fetch_array(mysql_query("SELECT COUNT(*) AS qnt FROM tabela"));
$ile=$row[qnt];
[/sql:1:b80023d511]
czy:
[sql:1:b80023d511]
$ile=mysql_num_rows(mysql_query("SELECT id FROM tabela"));
[/sql:1:b80023d511]
czesto sie nad tym zastanawiam, sam czesciej uzywam tego pierwszego, uwazam, ze tam tylko liczy ile jest wierszy, a nastepnie zamienia wyniki na tablice. A w drugim przypadku: pobiera wszystkie id i liczy ich ilosc, ale czy po pobraniu id sa one przechowywane w pamieci, bo jak tak, to druga wersja potrzebuje wiecej pamieci.

Drugie pytanie:
jak lepiej zrobic wysylanie subskrypcji:
czy poprzez:
header a w nim BCC: adres1@cos.pl, adres2@cos.pl, ... i tak wiecej adresow, czy przez petle i uzywanie funkcji mail dla kazdego adresu email.
ps. czesciej chyba jest wykorzystywany ten drugi.
Z góry dziekuje za odpowiedz.
cahe
Cytat
[sql:1:1cbba8a4d7]
$row=mysql_fetch_array(mysql_query("SELECT COUNT(*) AS qnt FROM tabela"));
$ile=$row[qnt];
[/sql:1:1cbba8a4d7]


Tutaj: 1 row in set (0.00 sec)

Cytat
czy:
[sql:1:1cbba8a4d7]
$ile=mysql_num_rows(mysql_query("SELECT id FROM tabela"));
[/sql:1:1cbba8a4d7]


Tutaj: 621 rows in set (0.19 sec)


Czyli pierwsze jest lepsze (szybsze);


Cytat
jak lepiej zrobic wysylanie subskrypcji:
czy poprzez:
header a w nim BCC: adres1@cos.pl, adres2@cos.pl, ... i tak wiecej adresow, czy przez petle i uzywanie funkcji mail dla kazdego adresu email.
ps. czesciej chyba jest wykorzystywany ten drugi.
Z góry dziekuje za odpowiedz.


Polecam drugi sposób. Może to trwać dłużej przy większej liczbie emaili, ale jest "prywatniejsze". (gość dostaje email tylko ze swoim adresem, a nie kilku osób dodatkowo).
wojto
Cytat
Polecam drugi sposób. Może to trwać dłużej przy większej liczbie emaili, ale jest "prywatniejsze". (gość dostaje email tylko ze swoim adresem, a nie kilku osób dodatkowo).

Tylko ze naglowek BCC (jesli dobrze pamietam, czy to ten) powoduje, ze jest widoczny tylko jeden adres, tej osoby do kogo wysylamy emaila, pozostale sa nie widoczne. Zatem w obu przypadkach jest widoczny tylko jeden adres, stad, chyba pierwszy sposob jest lepszy, bo jest szybszy.
uboottd
Co do liczenia: pierwszy sposob jest bezkonkurencyjny. MySQl dla takiego zapytania nawet nie otwiera tej tabeli tylko tak podstawowa informacje ma zapisana na boku. No i oczywiscie w ogole nie musi przesylac zawartosci tej tabeli do klienta, bo przesyla dokladnie jeden wiersz z wynikiem.
Piotr Mederak
Jesli chodzi o licznik to zdecydowanie pierwszy sposob.

Polecam rowniez pojscie krok dalej i zastapienie:

[php:1:f5e6cd2e05]$row=mysql_fetch_array(mysql_query("SELECT COUNT(*) AS qnt
FROM tabela"));
$ile=$row[qnt];[/php:1:f5e6cd2e05]

kodem:

[php:1:f5e6cd2e05]$ile = mysql_result(mysql_query("SELECT COUNT(*) AS qnt FROM tabela;"), 0);[/php:1:f5e6cd2e05]

W ten sposob nie zmuszasz php do tworzenia zupelnie zbednej tablicy a wynik zapytania SQL wrzucasz odrazu do zmiennej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.