PDA

View Full Version : سوال: شماردن تعداد سطرهای یه جدول



idocsidocs
سه شنبه 17 خرداد 1390, 01:04 صبح
من برای اینکه سطرهای یه جدول رو بشمارم ابتدا با استفاده از سلکت، سطرها رو انتخاب می کنم و بعد با استفاده از num_rows سطرها رو می شمارم.

لطفا بگید که چطور می تونم توی همون مرتبه اول تعداد سطرها رو بدست بیارو و به num_rows احتیاج نداشته باشم؟

لطفا روشی رو مطرح کنید که سریع باشه.

r0ot$harp
سه شنبه 17 خرداد 1390, 01:13 صبح
در Select می تونی از COUNT(*) استفاده کنی .

باتشکر احسان

idocsidocs
سه شنبه 17 خرداد 1390, 01:56 صبح
در Select می تونی از COUNT(*) استفاده کنی .

باتشکر احسان
لطفا در مورد استفاده از COUNT توی Select یه مثال بزنید.

کدوم روش سریع تر عمل می کنه؟ استفاده از COUNT باعث سرعت می شه یا استفاده از num_rows

MMSHFE
سه شنبه 17 خرداد 1390, 12:07 عصر
با سلام، استفاده از COUNT درصورتي كه توي پرانتز از * يا اسم يك فيلد كه index شده باشه استفاده كنيد، سريعتره.


$count=mysql_result(mysql_query('SELECT COUNT(*) FROM `table`'),0,0);

به جاي table اسم جدولتون رو بنويسيد.
موفق باشيد.

idocsidocs
سه شنبه 17 خرداد 1390, 12:14 عصر
با سلام، استفاده از COUNT درصورتي كه توي پرانتز از * يا اسم يك فيلد كه index شده باشه استفاده كنيد، سريعتره.


$count=mysql_result(mysql_query('SELECT COUNT(*) FROM `table`'),0,0);

به جاي table اسم جدولتون رو بنويسيد.
موفق باشيد.
توی کوئری که قرار دادید، 0،0 به چه معنی هست؟ منظورتون همون لیمیت هست؟

MMSHFE
سه شنبه 17 خرداد 1390, 13:04 عصر
تابع mysql_result يك ستون از يك سطر رو بر ميگردونه. چون (*)COUNT كلاً يك خونه داره، سطر و ستون رو 0 وارد ميكنيم يعني ميگيم از خروجي دستور SQL كه نوشتيم، سطر 0 و ستون 0 رو برگردونه كه ميشه همون تعداد ركوردها. اين مسئله با LIMIT فرق ميكنه. اونجا ميگيم با شروع از يك ركورد، چند ركورد رو برگردونه، اينجا ميگيم فيلد موردنظر از ركورد دلخواه.

idocsidocs
سه شنبه 17 خرداد 1390, 13:15 عصر
تابع mysql_result يك ستون از يك سطر رو بر ميگردونه. چون (*)COUNT كلاً يك خونه داره، سطر و ستون رو 0 وارد ميكنيم يعني ميگيم از خروجي دستور SQL كه نوشتيم، سطر 0 و ستون 0 رو برگردونه كه ميشه همون تعداد ركوردها. اين مسئله با LIMIT فرق ميكنه. اونجا ميگيم با شروع از يك ركورد، چند ركورد رو برگردونه، اينجا ميگيم فيلد موردنظر از ركورد دلخواه.
با توجه به این مطلب بهتر نیست که بجای * از اسم یکی از ستونها استفاده کنیم؟ در این صورت دیگه نیازی به استفاده از 0،0 نیست چون فقط یک ستون رو انتخاب می کنیم.

MMSHFE
چهارشنبه 18 خرداد 1390, 06:58 صبح
با سلام، فرقي نميكنه. در هر حال، خروجي دستور SELECT حتي اگه يك عدد باشه (مثل خروجي COUNT) باز هم بصورت يك جدول برگردونده ميشه. منتها جدولي كه يك ركورد و يك فيلد داره. درهرحال بايد از 0,0 توي mysql_result استفاده كنيم. به جاي * هم ميشه از نام يك فيلد استفاده كرد ولي دقت كنيد كه اگه اون فيلد، Index نباشه، سرعت خيلي كم ميشه.
موفق باشيد.