چگونه از دیتابیس رکورد تصادفی استخراج کنیم

سلام
اکثرا برنامه نویس ها زمانی که نیاز به استخراج رکورد تصادفی از دیتابیس دارند تابع ()RAND رو درون Query قرار می دهند . که البته این روش به راحتی دردیتابیس هایی با حجم پایین رکورد تصادفی را استخراج می کند اما زمانی که با یک دیتابیس با حجم بالا سر و کار داشته باشید کاملا متوجه می شوید که این کار تا چه اندازه تاخیر ایجاد می کنه.
یکی از روش هایی که برای جلوگیری از این اتفاق استفاده می شه با استفاده از ۲ Query انجام می شه که نظر شخصی من اینه که این روش خیلی روش مناسبی هست چون من روی دیتابیس های تاحدودی سنگین هم تست کردم و جواب داده.
این روش رو بصورت معمولی بدون استفاده از ORM و یا Framework توضیح می دم.



$res = mysql_query("SELECT COUNT(*) FROM TABLE_NAME");
$row = mysql_fetch_array($res);

سپس با استفاده از تابع RAND در پی اچ پی یک عدد تصادفی ایجاد می کنیم.

$offset = rand(0, $row[0]);

حالا این عدد تصادفی را به عنوان offset در نظر می گیریم

$res = mysql_query("SELECT * FROM TABLE_NAME LIMIT $offset, 1");


0 نظر:

ارسال يک نظر