Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Insert- porównanie czasów
Forum PHP.pl > Forum > Bazy danych
konkelka
Witam!

Chciałabym się dowiedzieć skad takie różnice w czasach jesli stosuje polecenie INSERT i wstawiam za pomocą pętli 1000 takich samych rekordów do poszczególnych baz danych.

Oto moje wyniki:

MYSQL- 18,26373989583

ORACLE- 1,80383136272

ACCESS- 1,11975848675

Bardzo proszę o odpowiedź co może być przyczyną tego, że MySQL tak odstaje ;/

Pozdrawiam
dr_bonzo
Pokaz jeszcze jak to testujesz.
Uzywasz prepared statements? Ile rekordow miales wczesniej w bazie? Ile masz indexow w tej tabeli? Typy tabeli? itd.
konkelka
Wpisuje dane do pusych baz danych, zlozonych z 3 kolumn. Tabele są identyczne w każdej bazie danych.

Kod Mysql
Kod
<?php


function microtime_float() {
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}


$connect=mysql_connect("localhost", "root", "haslo") or die("Sprawdz połączenie z serwerem");

mysql_select_db("osoby");


$time_start =microtime_float();

for($i=1; $i<=1000; $i++)
{

$sql="INSERT INTO `inserto` (`Imie` , `Nazwisko` , `Miasto` )
VALUES ('Jan', 'Patrykowski', 'Tczew'
)";

if (!mysql_query($sql,$connect))
  {
  die('Error: ' . mysql_error());
  }
}
echo "records added";


$time_end =microtime_float();
echo $time_end -$time_start;

mysql_close($connect)


?>


Kod Oracle
Kod
<?php  
function microtime_float() {
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}


$connect = oci_connect("system", "haslo");

$time_start =microtime_float();

for($i=1; $i<=1000; $i++)
{


$stmt = oci_parse($connect, "INSERT INTO inserto(IMIE, NAZWISKO, MIASTO) VALUES ('Jan', 'Patrykowski', 'Tczew')");
oci_execute($stmt);


}
echo "records added";


$time_end =microtime_float();
echo $time_end -$time_start;

?>


Kod Access
Kod
<?


function microtime_float() {
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}


       $dsn = "access";
       $user = "Admin";
       $password = "rybka";
    $link = odbc_connect($dsn,$user,$password)
    or die ('dupa z polaczenia ');



$time_start =microtime_float();

for($i=1; $i<=1000; $i++)
{


       $query = "INSERT INTO `inserto` (`IMIE`, `NAZWISKO`, `MIASTO`) VALUES ('Jan', 'Patrykowski', 'Tczew' )";

$result= odbc_exec($link,$query);
}
echo "records added";


$time_end =microtime_float();
echo $time_end -$time_start;
?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.