$s = explode (" ", microtime());
$s = $s[0]+$s[1];
$con = mysqli_connect ('localhost', 'test', 'pass', 'db') or die('Err');
for ($i=0; $i<1000; $i++) {
$stmt = $con -> prepare(" SELECT MAX(id) AS max_id , MIN(id) AS min_id FROM tb ");
$stmt -> execute();
$stmt->bind_result($M,$m);
$stmt->free_result();
$rand = mt_rand($m , $M).'<br/>';
$res = $con -> prepare(" SELECT * FROM tb WHERE id >= ? LIMIT 0,1 ");
$res -> bind_param("s", $rand);
$res -> execute();
$res->free_result();
}
$e = explode (" ", microtime());
$e = $e[0]+$e[1];
echo number_format($e-$s, 4, '.', '');
// and:
$link = mysql_connect ("localhost", "test", "pass") or die();
mysql_select_db ("db") or die ("Unable to select database".mysql_error());
for ($i=0; $i<1000; $i++) {
$range_result = mysql_query(" SELECT MAX(`id`) AS max_id , MIN(`id`) AS min_id FROM tb ");
$range_row = mysql_fetch_object($range_result);
$random = mt_rand($range_row->min_id , $range_row->max_id);
$result = mysql_query(" SELECT * FROM tb WHERE id >= $random LIMIT 0,1 ");
}
defenitly 준비된 문은 훨씬 더 안전되지만, 또한 그들이 훨씬 빠르게하지만 위의 코드에 내 테스트에서 내가 가지고있는 것을 말한다 곳마다 : - 준비된 문에 2.45 초 는 - 5.05 초를 SECON에 대한 예 :준비된 문장이 훨씬 빨라지면 안됩니까?
내가 뭘 잘못하고 있다고 생각하니? 두 번째 솔루션을 사용해야합니까, 아니면 prep stmt를 최적화해야합니까?
2.45 *는 5.05보다 빠름? –
코드를 읽을 수 있도록 포맷하십시오. –
OMG .. 만약 당신이 이렇게 쓰면 사람들은 아무 것도 이해할 수 없습니다. 제대로 포맷하십시오. –