Astazi mi-am propus sa fac un test pentru a vedea daca exista o imbunatatire de performanta atunci cand se folosesc chei primare in tabelele din bazele de date MySQL.
Pentru aceasta am creat o baza de date:
create database testviteza;
In aceasta baza de date am creat un tabel:
CREATE TABLE `random` (
`id_inregistrare` int(100) NOT NULL DEFAULT ‘0’,
`date` varchar(100) NOT NULL DEFAULT ”
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Mi-am propus sa populez acest tabel cu date. O metoda de a insera multe date in acest tabel intr-un mod rapid a fost sa creez un script PHP care sa faca acest lucru pentru mine
[ad#google-adsense]
<?php
function datealeatoare($length = „”)
{
$code = md5(uniqid(rand(), true));
if ($length != „”) return substr($code, 0, $length);
else return $code;
}
set_time_limit(300);
$link=mysql_connect(‘localhost’, ‘utilizator’, ‘parola’);
mysql_select_db(‘testviteza’, $link);
for($i=0;$i<=1000000;$i++)
{
$sql=”insert into random(id_inregistrare,date) values (‘”.$i.”‘,'”.datealeatoare(100).”‘)”;
mysql_query($sql);
}
echo „Realizat”;
mysql_close($link);
?>
Avand datele introduse in tabel, incercam urmatoare interogare folosind clientul de mysql instalat pe acelasi sistem cu serverul mysql:
Mai incercam sa vedem timpul pentru o interogare dupa campul date:
Vom modifica tabelul creat setand campul id_inregistrare ca fiind cheie primara in tabel.
alter table random add primary key(id_inregistrare);
Dupa aceasta modificare executam din nou prima interogare si observam ca timpul de raspuns este mult mai scazut:
Repetand interogarea dupa campul date observam ca aici nu exista o imbunatatire a timpului de raspuns:
Concluzia este simpla: interogarile dupa cheia primara definita pentru tabelul respectiv se executa mult mai rapid.
Articole asemanatoare:
- Au apărut
- Squid – acces pe baza de utilizator si parola
- Primii pasi in lumea FreeBSD-ului
- ZTE ZXR 10 2609
- FreeBSD–Server FTP cu SSL/TLS si utilizatori virtuali
- RTSP și HTTP Camera IP VSTARCAM C7837WIP
- Instalare Apache, PHP si MySQL pe Fedora Core
- MySQL – schimbarea parolei uitate pentru root
- Logare mesaje server DHCP în baza de date MySQL
- Nokia E51 – Înlăturare branduire Orange