И так по результатам тестирования:
Скрипт:
<?php
$intStartWork = microtime(true);
for ($i=0; $i<=50; $i++) {
$strSql = "SELECT `id` FROM `users` WHERE `login` = '" . $login . "' LIMIT 1;";
$intResult = mysql_num_rows(mysql_query($strSql));
}
echo round(microtime(true) - $intStartWork, 4) . '<br />';
//////////////////////////////////////////////////////
$intStartWork = microtime(true);
for ($i=0; $i<=50; $i++) {
$strSql = "SELECT count(*) FROM `users` WHERE `login` = '" . $login . "';";
$strResult = mysql_result(mysql_query($strSql), 0);
}
echo round(microtime(true) - $intStartWork, 4) . '<br />';
//////////////////////////////////////////////////////
$intStartWork = microtime(true);
for ($i=0; $i<=50; $i++) {
$strSql = "SELECT `id` FROM `users` WHERE `login` = '" . $login . "' LIMIT 1;";
$arrResult = mysql_fetch_assoc(mysql_query($strSql));
}
echo round(microtime(true) - $intStartWork, 4);
Показал следующее:
Вариант 1: 0.0165, 0.0141, 0.0144, 0.0275, 0.0129;
Вариант 2: 0.0117, 0.0111, 0.0097, 0.0201, 0.0114;
Вариант 3: 0.0136, 0.0149, 0.0144, 0.0155, 0.0142;
И результаты выдаваемые запросами:
При условии true
Вариант 1: int(1)
Вариант 2: string(1) "1"
Вариант 3: array(1) { ["users_id"]=> string(1) "1" }
При условии false
Вариант 1: int(0)
Вариант 2: string(1) "0"
Вариант 3: bool(false)
Добавлено через 07:40 сек.
А вообще это экономия на спичках! ради этой пары запросов, мой выбор 1й вариант! т.к результат всегда integer и не надо сравнивать строки!
Изменил: Nu3oN (31.05.2012 / 22:02)