Importanta cheilor primare in tabele MySql

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:

mysql_fara_cheie_primara

Mai incercam sa vedem timpul pentru o interogare dupa campul date:

mysql_fara_cheie_primara_interogare2

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:

mysql_cu_cheie_primara

Repetand interogarea dupa campul date observam ca aici nu exista o imbunatatire a timpului de raspuns:

mysql_cu_cheie_primara2

Concluzia este simpla: interogarile dupa cheia primara definita pentru tabelul respectiv se executa mult mai rapid.

Articole asemanatoare:

Lasă un răspuns

Adresa ta de email nu va fi publicată.

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Info

Blogul folosește cookie-uri pentru numărarea vizitatorilor, comentarii mai rapide și alte îmbunătățiri. Nu colectez date personale în afara celor fără de care serverul și blogul nu pot funcționa. Prin continuarea folosirii acestui site, sunteti de acord cu

politica de confidentțalitate