Əsas səhifə > MySQL > Indexes

Indexes

index-lərin nəyə lazım olduğundan danışmayacam dünyaca məşhurdu çünki.
MySQL-də 3 tip ümumi index var:
1.PRİMARY KEY
2.UNİQUE
3.bir də non-unique index-lər.

Table yaradarkən index-ləmə
Yeni table yaradarkən index-ləmək üçün:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
index(id)  --id column index-lendi artiq 
);

Və daha sonra table-a baxsaq

desc index_show;

output-umuz işarələnib:
table output

Eyni zamanda onu da deyək ki eyni zamanda bir neçə sütunu index-ləmək mümkündür.Buna Composite Key deyilir.

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
index(id,firstname,lastname)  --id column index-lendi artiq 
);

output yuxarıdakı ilə eynidir.
table output

Lakin Parallel İndex-lər şəklində yazdıqda:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
index(id),
index (firstname),
index(lastname)   
);

Output-da hər üç sütunun ayrı-ayrı index-ləndiyi görsənir:
table output
Səbəbini bilirəmsə arap oluyum🙂

Gələk əsas məsələyə PRİMARY KEY(PK) və UNİQUE.
PK üçün kodumuz:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
primary key(id)
);

Və output olaraq da:
primary key output

PK üçün də eyni zamanda Composite Key qaydası mövcuddur və İNDEX-dən fərqli olaraq hamısı ayrı-ayrılıqda sıralanır:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
primary key(id,firstname,lastname)
);

Ayrılıqda sıralanmanı göstərən output:
primary key output

Lakin Paralel olaraq Primary Key verdikdə,yəni 2 və ya daha çox PK yazdıqda ERROR verir.

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
primary key(id),
primary key (firstname)
);

ERROR:
primary key output

Səbəb bir table-da yalnız bir PK ola bilər.Əgər bu belədirsə, onda nəyə görə Composite PK yazmaq mümkündür?🙂 Bilmirəm🙂

Unique Key-ə gəlirik. İlk öncə onu deyim ki hər hansl NOT NULL column-a Unique vermək elə onu Primary Key kimi elan etməkdir. Sadəcə PK-da əgər column definition-da açıq şəkildə NOT NULL verilməyibsə, MySQL implicit şəkildə PK şəklində index-lənmiş column-u NOT NULL edir. Əgər bunu sınasaq:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
unique (id,firstname)
);

və yenə DESCRİBE versək, output olaraq yuxarıdakı məlumatın doğruluğu sübut olunar.
unique output

İndi isə sütunun birini NOT NULL digərini isə NULL olaraq saxlayaq:

create table index_show(
id int not null,
firstname varchar(25),
lastname varchar(25) not null,
unique (id,firstname)
);

Output Fərqlidir:

unique key

İndi isə paralel olaraq Unique Key verək. lakin yenə da bir sütunu NOT NULL digərini isə NULL saxlayaq:

create table index_show(
id int not null,
firstname varchar(25),
lastname varchar(25) not null,
unique (id),
unique (firstname)
);

Output yenə fərqlidir🙂

unique paralel output

Əslində mövzunu başa düşürük amma beyinlər sulanır məncə🙂
Təşəkkürlər. Sualımı Comment-də verəcəm.

Kateqoriyalar: MySQL Etiketlər: , , ,
  1. Avqust 10, 2011 tarixində, saat 08:10

    Sualım budur ki, Nəyə görə index(id,firstname,lastname) yazdıqda 1 sütunun indexləndiyi görsənir. Və nəyə görə index (id), index (firstname), index(lastname) yazdıqda hər 3 sütun ayrı-ayrı index-lənir?🙂

    Təşəkkürlər.

  1. No trackbacks yet.

Bir cavab yazın

Sistemə daxil olmaq üçün məlumatlarınızı daxil edin və ya ikonlardan birinə tıklayın:

WordPress.com Loqosu

WordPress.com hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Twitter rəsmi

Twitter hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Facebook fotosu

Facebook hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Google+ foto

Google+ hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

%s qoşulma

%d bloqqer bunu bəyənir: