engmmrj
یک شنبه 03 خرداد 1394, 15:41 عصر
ما در query ها از توایع mysql و php می توانیم استفاده کنیم که استفاده از توابع phpو mysql هر دو خروجی یکسانی دارند ولی در بحث performance و query های بهینه فرق هایی بین استفاده کردن از توابع می باشد که در پروژه های پر بازدید این امر بصورت فاحش خودش را نشان می دهد .
در ادامه مقایسه ایی از نظر performance بین توابع mysql و php صورت گرفته است که مشخص می کند که استفاده از توابع کدام یک performance بهتری دارند.
1- بدست آوردن میانگین
A - با استفاده از تابع های php
$sql = "SELECT score FROM school";
$result = mysqli_query($conn, $sql);
$total = 0;
$num = mysqli_num_rows($result);
while($row = mysqli_fetch_assoc($result)) {
$total += $row['score'];
}
echo ($total / $num);
B- با استفاده از تابع های Mysql
$sql = "SELECT AVG(score) as average_score FROM school";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
echo $row['average_score'];
نتیجه : برای ۱۰۰۰۰ رکورد php در 5.65 ثانیه و در mysql در 2.14 ثانیه به طول انجامید ُ همانطور که مشاهده میکنید mysql در این مثال از سرعت بیشتری برخوردار بود.
و اما اگر query cache سرور mysql روشن باشد مثال فوق در 0.91 ثانیه به طول می انجامد.
۲- فرمت نمایش فیلد های زمان
A - یپاده سازی مثال فوق با استفاده از توابع php
$result = mysqli_query($conn, "SELECT rating_date FROM ratings");
while($row = mysqli_fetch_assoc($result)) {
$timestamp = strtotime($row['rating_date']);
$theDate = date('d/m/Y', $ timestamp);
echo $theDate . ' ';
}
B- پیاده سازی مثال فوق با استفاده از توابع mysql
$sql = "SELECT DATE_FORMAT(rating_date, '%D/%M/%Y') AS rating_date FROM ratings";
$result = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($result)) {
echo $row['rating_date'] . ' ';
}
نتیجه : برای ۱۰۰۰۰ رکورد php با زمان 39.48 ثانیه و mysql در 8.30 ثانیه به طول انجامید ُ همانطور که مشاهده می فرمایید حدودا ۴.۵ برابر سرعت mysql از php در مثال بالاتر بود اما اگر cache mysql روشن باشد این رقم به 5.74 ثانیه میرسد.
نتیجه گیری : همان طور که مثال های بالا مشاهده کردید ُ استفاده از تایع های mysql از نظر performance خیلی بهتر از تابع های php عمل میکنند.
و من به شما توسعه میکنیم تاجایی که خود mysql نیاز ما را برطرف میکنید از php در query ها استفاده نکنید.
منبع : http://engmmrj.ir/site/22
در ادامه مقایسه ایی از نظر performance بین توابع mysql و php صورت گرفته است که مشخص می کند که استفاده از توابع کدام یک performance بهتری دارند.
1- بدست آوردن میانگین
A - با استفاده از تابع های php
$sql = "SELECT score FROM school";
$result = mysqli_query($conn, $sql);
$total = 0;
$num = mysqli_num_rows($result);
while($row = mysqli_fetch_assoc($result)) {
$total += $row['score'];
}
echo ($total / $num);
B- با استفاده از تابع های Mysql
$sql = "SELECT AVG(score) as average_score FROM school";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
echo $row['average_score'];
نتیجه : برای ۱۰۰۰۰ رکورد php در 5.65 ثانیه و در mysql در 2.14 ثانیه به طول انجامید ُ همانطور که مشاهده میکنید mysql در این مثال از سرعت بیشتری برخوردار بود.
و اما اگر query cache سرور mysql روشن باشد مثال فوق در 0.91 ثانیه به طول می انجامد.
۲- فرمت نمایش فیلد های زمان
A - یپاده سازی مثال فوق با استفاده از توابع php
$result = mysqli_query($conn, "SELECT rating_date FROM ratings");
while($row = mysqli_fetch_assoc($result)) {
$timestamp = strtotime($row['rating_date']);
$theDate = date('d/m/Y', $ timestamp);
echo $theDate . ' ';
}
B- پیاده سازی مثال فوق با استفاده از توابع mysql
$sql = "SELECT DATE_FORMAT(rating_date, '%D/%M/%Y') AS rating_date FROM ratings";
$result = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($result)) {
echo $row['rating_date'] . ' ';
}
نتیجه : برای ۱۰۰۰۰ رکورد php با زمان 39.48 ثانیه و mysql در 8.30 ثانیه به طول انجامید ُ همانطور که مشاهده می فرمایید حدودا ۴.۵ برابر سرعت mysql از php در مثال بالاتر بود اما اگر cache mysql روشن باشد این رقم به 5.74 ثانیه میرسد.
نتیجه گیری : همان طور که مثال های بالا مشاهده کردید ُ استفاده از تایع های mysql از نظر performance خیلی بهتر از تابع های php عمل میکنند.
و من به شما توسعه میکنیم تاجایی که خود mysql نیاز ما را برطرف میکنید از php در query ها استفاده نکنید.
منبع : http://engmmrj.ir/site/22