так что лучше PDO или mysql

Печать RSS
487

Автор
Пацак
0
40. ramzes, prepare это сделан тоже через mysqli?

2000 лет д.н.э.
0
41. ТАЛЫШ, да, тоже есть подготовленные выражения как и в пдо
Автор
Пацак
0
а какая там будет генерация если пдо?

2000 лет д.н.э.
0
Там где то в той теме есть и сравнение с пдо.
Он быстрее только за счет 5000 запросов с подготовленным выражением, разовые запросы те быстрее по моему. А аообще, все это дело вкуса, если на странице 50 запросов то это не на пдо или мускули переходить надо, а думать об оптимизацииsmile имхо конечно, но все уперается в код а не в сервер всегда
Автор
Пацак
0
на моих тестах PDO быстрее MySQLi, как миниму в 2 раза!!!

Добавлено через 05:48 сек.
но если использовать в mysqli real_query то тут уже будет быстрее mysqli чем PDO!!!!
Изменил: Вусал (21.11.2011 / 02:44)
Автор
Пацак
0
сам код теста
<table border="1px"> 
<tr> 
<td> 
<center>---------------<h3> MySQLi </h3></centr> 
<? 
$ar = 30;
$sql = 'SELECT * FROM `smiles` LIMIT 1';
/////// MySQLi /////// 
$start_array = explode(" ",microtime()); 
$start_time = $start_array['1'] + $start_array['0']; 
$mysqli = new mysqli('localhost', 'fr4718_base', 'ajtajt22', 'fr4718_base'); 
$mysqli -> query("SET NAMES 'utf8'"); 
for($i=1;$i<$ar;$i++){ 
 $result = $mysqli -> query($sql) -> fetch_assoc();
echo $i.') '.$result['smiles_name'].'<br /><br />'; 
} 
$end_time = microtime(); $end_array = explode(" ",$end_time);
echo '<center><h3> MySQLi </h3></centr><br>'; 
$mysqli->close();
echo round((($end_array['1'] + $end_array['0']) - $start_time),4).'сек.<hr />'; 

?> 
</td> 
<td> 
<center>---------------<h3> MySQL </h3></centr> 
<? 
/////// MySQL /////// 
$start_array2 = explode(" ",microtime()); 
$start_time2 = $start_array2['1'] + $start_array2['0']; 
mysql_connect('localhost', 'fr4718_base', 'ajtajt22'); 
mysql_select_db('fr4718_base'); mysql_query('SET NAMES utf8'); 
for($i=1;$i<$ar;$i++){ 
$result = mysql_fetch_assoc(mysql_query($sql)); 
echo $i.') '.$result['smiles_name'].'<br /><br />'; 
} 
$end_time2 = microtime(); $end_array2 = explode(" ",$end_time2); 
echo '<center><h3> MySQL </h3></centr><br>';
echo round((($end_array2['1'] + $end_array2['0']) - $start_time2),4).'сек.<hr />'; 
?> 
</td>

 
</td> 
Автор
Пацак
0

<td> 
<center>---------------<h3> PDO </h3></centr> 
<? 
/////// PDO /////// 
$start_array3 = explode(" ",microtime()); 
$start_time3 = $start_array3['1'] + $start_array3['0']; 
$pdo = new PDO('mysql:host=localhost;dbname=fr4718_base', 'fr4718_base', 'ajtajt22'); 
$pdo->query("SET NAMES 'utf8'"); 
for($i=1;$i<$ar;$i++){ 
$result = $pdo->query($sql)->fetch(PDO::FETCH_ASSOC); 
echo $i.') '.$result['smiles_name'].'<br /><br />'; 
} 
$end_time3 = microtime(); $end_array3 = explode(" ",$end_time3); 
echo '<center><h3> PDO </h3></centr><br>';
 $pdo = null;
echo round((($end_array3['1'] + $end_array3['0']) - $start_time3),4).'сек.<hr />'; 
?> 
</td> 
<td> 
<center>---------------<h3> PDO prepare </h3></centr> 
<? 
/////// PDO prepare/////// 
$start_array3 = explode(" ",microtime()); 
$start_time3 = $start_array3['1'] + $start_array3['0']; 
$pdo = new PDO('mysql:host=localhost;dbname=fr4718_base', 'fr4718_base', 'ajtajt22'); 
$pdo->query("SET NAMES 'utf8'"); 
$res = $pdo->prepare($sql); 
for($i=1;$i<$ar;$i++){ 
$names = array();
$res->execute($names);
$result  =   $res->fetch();
echo $i.') '.$result['smiles_name'].'<br /><br />'; 
} 
$end_time3 = microtime(); $end_array3 = explode(" ",$end_time3); 
echo '<center><h3> PDO prepare</h3></centr><br>';
 $pdo = null;
echo round((($end_array3['1'] + $end_array3['0']) - $start_time3),4).'сек.<hr />'; 
?> 
</td> 

Автор
Пацак
0

<td> 
<center>---------------<h3> MySQLi real </h3></centr> 

<?
$start_array4 = explode(" ",microtime()); 
$start_time4 = $start_array4['1'] + $start_array4['0']; 
$mysqli = new mysqli('localhost', 'fr4718_base', 'ajtajt22', 'fr4718_base'); 
$mysqli -> query("SET NAMES 'utf8'"); 
for($i=1;$i<$ar;$i++) { 
    $res = $mysqli->real_query($sql); 
    $res = $mysqli->store_result()->fetch_assoc(); 
 echo $i.') '.$result['smiles_name'].'<br /><br />'; 
} 
$end_time4 = microtime(); $end_array4 = explode(" ",$end_time4); 
echo '<center><h3>mysqli_real</h3></centr><br>';
echo round((($end_array4['1'] + $end_array4['0']) - $start_time4),4).'сек.<hr />'; 
?>

</td> 

</tr> 
</table>

Добавлено через 04:18 сек.
[URL=http://www.radikal.ru][IMG]http://s56.radikal.ru/i152/1111/ac/6733954eaed9.jpg[/IMG][/URL]

Добавлено через 05:24 сек.
30 одинаковых запросов...

Добавлено через 08:56 сек.
P.S. я видно забыл зашифрововать свои данные от базы)))))))))
Автор
Пацак
0
Всё ровно не знаю что выбрать...(((

2000 лет д.н.э.
0
Мускули ъ
Потому что мне он больше нравится =)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск