Ben ne zaman kullanmalıyım KEY
, PRIMARY KEY
, UNIQUE KEY
ve INDEX
?
Ben ne zaman kullanmalıyım KEY
, PRIMARY KEY
, UNIQUE KEY
ve INDEX
?
Yanıtlar:
KEY
ve INDEX
MySQL içindeki eş anlamlılardır. Aynı şeyi kastediyorlar. Veritabanlarında , veri alma hızını artırmak için dizinler kullanırsınız. Bir indeks tipik olarak kullanılan sütunlar üzerinde oluşturulan JOIN
, WHERE
ve ORDER BY
maddeleri.
Bir tablonuz olduğunu users
ve soyadı 'Smith' olan tüm kullanıcıları aramak istediğinizi düşünün . Bir dizin olmadan, veritabanı tablonun tüm kayıtlarını geçmek zorunda kalacak: bu yavaştır, çünkü veritabanınızda ne kadar çok kayıt varsa, sonucu bulmak için o kadar çok iş gerekir. Öte yandan, bir dizin veritabanının 'Smith' kayıtlarının tutulduğu ilgili sayfalara hızlı bir şekilde geçmesine yardımcı olacaktır. Bu, insanlar, soyadına göre birini bulmak için bir telefon rehberi dizininden nasıl geçtiğimize çok benziyor: Bilgileri sırayla eklediğimiz sürece, kapaktan kapağa kadar dizinde aramaya başlamıyoruz. 'S' sayfalarına hızlıca atlamak için tuşlarını kullanın.
Birincil anahtarlar ve benzersiz anahtarlar benzerdir. Birincil anahtar, bir satırı benzersiz şekilde tanımlayabilen bir sütun veya sütun birleşimidir. Benzersiz bir anahtarın özel bir durumudur . Bir tablonun en fazla bir birincil anahtarı olabilir, ancak birden fazla benzersiz anahtarı olabilir. Bir sütunda benzersiz bir anahtar belirlediğinizde, tablodaki hiçbir iki satır aynı değere sahip olamaz.
Ayrıca birincil anahtarlar veya benzersiz anahtarlar olarak tanımlanan sütunların MySQL'de otomatik olarak dizine eklendiğini unutmayın.
passengers
Aşağıdaki alanlarla adlandırılmış bir tablonuz varsa : (id, first_name, last_name, age, passport_number)
normalde id
sütunu birincil anahtar olacak şekilde ayarlarsınız . Birincil anahtar otomatik olarak benzersiz bir anahtardır. Temel fark, tabloda yalnızca bir birincil anahtar olabilmeniz ve sütunun NULL
değer içerememesidir . Kurmak gerek yoktur id
olmak sütunu UNIQUE
birincil anahtar olarak ayarlayarak, otomatik olarak benzersiz olması garanti çünkü ... O zaman da ayarlayabilirsiniz passport_number
için UNIQUE
böylece en fazla bir yolcu ...
NULL
bu sütuna sorunsuz bir şekilde ekleyebilirsiniz .
KEY ve INDEX, eşanlamlıdır.
Performans ölçümleri ve EXPLAIN size eksik bir dizin nedeniyle sorgunun verimsiz olduğunu gösterdiğinde bir dizin eklemelisiniz. Dizin eklemek sorguların performansını artırabilir (ancak tablodaki değişiklikleri yavaşlatabilir).
Bu sütundaki (veya sütunlardaki) değerlerin benzersiz olmasını engellemek istediğinizde BENZERSİZ'i kullanmalısınız, böylece yinelenen değerler ekleme girişimleri hataya neden olur.
Bir PRIMARY KEY hem benzersiz bir kısıtlamadır hem de sütunun NULL DEĞİLDİR. Her satıra bir kimlik vermek için kullanılır. Bu, yabancı anahtar kısıtlaması ile başka bir tabloya katılmak için yararlı olabilir. Bir tablonun BİRİNCİL ANAHTAR'a sahip olması gerekmese de, genellikle iyi bir fikirdir.
Birincil anahtarNULL
değerlere izin vermez , ancak benzersiz anahtarNULL
değerlere izin verir.
Biz ilan edebilir tek birincil anahtar bir tabloda, ancak bir tablo olabilir çoklu benzersiz anahtarları (sütun atama).
PRIMARY KEY
AND UNIQUE KEY
, farklı işlevleri olması dışında benzerdir. Birincil anahtar, tablo satırını benzersiz kılar (aynı anahtarla 2 satır olamaz). Bir veritabanı tablosunda yalnızca 1 birincil anahtarınız olabilir.
Benzersiz anahtar, tablo satırındaki tablo sütununu benzersiz kılar (yani, 2 tablo satırı aynı tam değere sahip olamaz). 1'den fazla benzersiz anahtar tablosu sütununa sahip olabilirsiniz (tablodaki yalnızca 1 tablo sütununun benzersiz olduğu anlamına gelen birincil anahtarın aksine).
INDEX
aynı zamanda benzersizlik yaratır. MySQL (örnek), endekslenen sütun için bir indeksleme tablosu oluşturur. Bu şekilde, sorgu bu dizinli tablo sütununda sorgulandığında tablo satırı değerini almak daha kolaydır. Dezavantajı, birçok güncelleme / silme / oluşturma işlemi yaparsanız, MySQL'in dizinleme tablolarını yönetmesi gerektiğidir (ve bu bir performans darboğazı olabilir).
Bu yardımcı olur umarım.
UNIQUE KEY
olabilir NULL
ama PRIMARY KEY
olamaz NULL
.
Benzersiz Anahtarlar: İki satırın benzer olmadığı sütunlar
Birincil Anahtar: Bir tablodaki her satırı benzersiz bir şekilde tanımlayabilen minimum sütun sayısının toplanması (yani, birincil anahtarı oluşturan tüm sütunlarda iki satır benzer değildir). Bir tabloda birden fazla birincil anahtar olabilir. Benzersiz bir anahtar varsa, tablodaki birincil anahtardır ("birincil anahtar değil"). Benzersiz bir anahtar yoksa, bazı tablolarda birincil anahtar oluşturabilen (ad_adı, soyad_adı, baba_adı, ana_adı) gibi bir satırı tanımlamak için birden fazla sütun değeri gerekecektir.
Dizin: sorguları optimize etmek için kullanılır. Sonuçları birkaç kez sütun bazında arayacak veya sıralayacaksanız (örneğin, çoğunlukla öğrenciler öğrencileri rulo nolarına göre değil, ada göre arayacaklardır) sütun değerlerinin tümü " örneğin "ikili ağaç algoritmasıyla".
Birincil anahtar - bir tabloya bir tabloya yalnızca bir birincil anahtar koyabiliriz ve değerleri tabloya girerken bu sütunu boş bırakamayız.
Benzersiz Anahtar - bir tabloya birden fazla benzersiz anahtar koyabiliriz ve değerleri tabloya girerken bu sütunu boş bırakabiliriz. Birincil ve benzersiz anahtarı uyguladığımızda sütun benzersiz değerler alır (aynı değildir).
Birincil anahtar, farklı tablolarla çalışmak için kullanılır. Bu ilişkisel veritabanlarının temelidir. Bir kitap veritabanınız varsa, 2 tablo oluşturmak daha iyidir - 1) kitaplar ve 2) INT birincil anahtarı "id" olan yazarlar. Sonra yazarların adı yerine kitaplarda kimliği kullanın.
Tekrarlanan girişlerin olmasını istemiyorsanız, benzersiz anahtar kullanılır. Örneğin, kitap tablonuzda başlık olabilir ve her başlık için yalnızca bir giriş olduğundan emin olmak isteyebilirsiniz.
Benzersiz anahtarı :
Birincil anahtar