Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

Нова тема
Броене на брой записи от ДБ най-оптимално
Тази тема е погледната 213 пъти
Добави темата към любими | Принтирай темата | Нова тема 
Публикувано на: 26.08.2008 03:31
po_taka
Ронин

Мнения: (192)

Искам да ми изведе например колко потребителя имам.Не ме интересува нищо друго освен колко са на брои.

И за да е напълно ясно:
CODE
1
2
3
4
5
$br=0;
$query = mysql_query("SELECT * FROM users");
while($row = mysql_fetch_array($query)){
$br++;
}

ако * го заменя с например ID , би трябвало да стане по-оптимизирано.

Но ако направя така:
CODE
1
2
3
$query = mysql_query("SELECT * FROM users");
echo mysql_num_rows($query);
}

e по-добре.

Още по-добре е :
CODE
1
2
$query = (mysql_fetch_array(mysql_query("SELECT COUNT(id) AS kolko FROM users")));
echo $query['kolko']." регистрирани потребители";

Та това има ли накъде да се оптимизира ?
Наприер колко поста има в дадена категория на форума -> каква е завката ? като последната която съм дал ли ?

пп това е като 1вата тема дето пуснах с мн въпроси , ама това ми е интересно още :)


 
---------------------------
Потребител от: 15.04.08 | Всички уроци от po_taka | Всички скриптове от po_taka

http://www.tekstove.info/ дайте някви идеи кво да го права тва нещо
напиши eMail напиши лично съобщение виж профила на po_taka
Публикувано на: 26.08.2008 10:25
bgspace
Самурай

Мнения: (80)

Тълкуваш грешно думата оптимизация. Не означава, че когато си събрал всичко в един ред си го оптимизирал. Това повишава възможноста от появата на грешка. Под оптимизация се разбира подобряването на работата на данен скрип или заявка.
Това е оптимизация :  http://it-place.net/tutorial/MySQL/dev/12/756/%CF%F0%E0%E2%E8%EB%E5%ED+%E8%E7%E1%EE%F0+%ED%E0+%F2%E8%EF%EE%E2%E5%F2%E5+%ED%E0+%EF%EE%EB%E5%F2%E0%F2%E0+%E2+MySQL+%F2%E0%E1%EB%E8%F6%E0  http://it-place.net/tutorial/MySQL/dev/12/690/%C8%E7%EF%EE%EB%E7%E2%E0%ED%E5+%ED%E0+%E8%ED%E4%E5%EA%F1%E8+%E2+MySQL  http://it-place.net/tutorial/MySQL/dev/12/659/%CA%E0%EA+%E4%E0+%E2%FA%E2%E5%E6%E4%E0%EC%E5+%EF%F0%E0%E2%E8%EB%ED%EE+MySQL+%EA%EE%E4+%E8+%E7%E0%F9%EE+%E5+%ED%F3%E6%ED%EE+%F2%EE%E2%E0%3F  http://it-place.net/tutorial/MySQL/dev/12/553/%C8%E7%EF%EE%EB%E7%E2%E0%ED%E5+%ED%E0+Foreign+Keys+%E2+MySQL  http://it-place.net/tutorial/MySQL/dev/12/121/%CA%EE%EC%EF%EB%E5%EA%F1%ED%E8+%E7%E0%EF%E8%F2%E2%E0%ED%E8%FF+%EA%FA%EC+MySQL
За последния линк имам само една малка забележка към @ Mutatos .Където е прави join е хубаво опред пред select  да се сложи и един explain за да се види дали е  добре заявката ако не е да може да се оптимизира


 
---------------------------
Потребител от: 10.05.07 | Всички уроци от bgspace | Всички скриптове от bgspace
напиши eMail напиши лично съобщение виж профила на bgspace
Публикувано на: 26.08.2008 11:56
zipopro
Майстор

Мнения: (743)

Не знам за оптимизация, понеже всеки програмист има начин на писане и не можеш да го накараш да пише друго яче! Но по-хубаво е кода да е разбираем, възможно най-много(което в повечето големи кодове не върши мн добра работа, в смисъл че се ориентираш ама трудно го оправяш)
Например аз използвам постоянно Табове за разделяне:
if(....)
{
tab код
tab код
}
на всичко с { } 1. че тия скоби ги слагам на отделен ред 2. че кода м/ду тях е с Табове! А за тва изкарващото потребители:
$num_potr = mysql_num_rows(mysql_query("SELECT ....."))or die(mysql_error());
echo $num_potr;


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
Публикувано на: 26.08.2008 12:14
imagination
Ронин

Мнения: (177)

 Този отговор е маркиран като удовлетворителен!

Здравейте,
Оптимално от към гледна точка трафика от сървъра на базата от данни и web сървъра е последната заявка SELECT COUNT(id). В другите две цялото съдържание на таблицта или таблиците се зарежда в паметта и от една страна заема съответното количество памет, от друга ще генерира трафик м/у sql-a и web сървъра. Дори и да са на един хост пак си е значително забавянето при голям обем от данни.
Заявки от сорта
CODE
1
SELECT * FROM ... без LIMIT или условие
са много "харесвани" от хостинг компаниите :)
За оптимално писане ... то темата е неизчерпаема, има си стандарти за това, ако някой ден попаднете в гоялма фирма ще Ви се наложи да пишете както е възприето от другите програмисти.

Поздрави.



 
---------------------------
Потребител от: 17.02.06 | Всички уроци от imagination | Всички скриптове от imagination

http://www.absurdi.com
напиши eMail напиши лично съобщение виж профила на imagination
Публикувано на: 26.08.2008 15:24
po_taka
Ронин

Мнения: (192)

това което @imagination каза ми трябва.
Оптимално от към гледна точка трафика от сървъра на базата от данни и web сървъра е последната заявка SELECT COUNT(id)

Просто питах дали тя е най-оптимална за случая.Дали може още....

както и да е :) 10х на всички


 
---------------------------
Потребител от: 15.04.08 | Всички уроци от po_taka | Всички скриптове от po_taka

http://www.tekstove.info/ дайте някви идеи кво да го права тва нещо
напиши eMail напиши лично съобщение виж профила на po_taka
Публикувано на: 27.08.2008 02:24
zipopro
Майстор

Мнения: (743)

Е ми не знам! Има разлика дали ще заредиш 100 милиона реда от база данните или едно 17 хиляди(колкото са потребителите в it-place)! За това няма голямо значение какво толкова се пише в точно тази заявка. Но да тая COUNT заявка е добра...
$nums = count(mysql_query("SELECT id FROM table")or die(mysql_error()));
май така беше... Спи ми се ако е грешно нещо, не ме винете! Та, виж този пример също е оптимизиран. Селектира само id от table т.е. прави 1 заявка към определено поле и после отделно се отправя само към уеб сървъра(и зарязва нали база данните). Но пък нали за това са измислили Count в MySQL? =) И двата начини са добри но твоя е по-добър, понеже вградена, по-малко се пише и така =).
Поздрави, лека вечер!


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
Публикувано на: 27.08.2008 14:00
HunteR666
Ронин

Мнения: (20)

Цитат от "jooorooo":
Естествено че има значение, когато са повече записи е много по-добре да се използва COUNT в заявката, работи по-бързо и по леко.


 
---------------------------
Потребител от: 19.06.08 | Всички уроци от HunteR666 | Всички скриптове от HunteR666
напиши eMail напиши лично съобщение виж профила на HunteR666
 1 посетител чете тази тема (0 потребители и 1 гост)  
Активни потребители: ---
   





IT-PLACE.NET © 2004 - 2008