KAYNAK KOD Sql Server: Dıstınct Komutu Nedir Ve Nasıl Kullanılır?

  • Konuyu Başlatan Konuyu Başlatan Prepective
  • Başlangıç tarihi Başlangıç tarihi
  • Okuma süresi: 3:48

Prepective

Admin
Admin
Moderatör
Puan 0
Çözümler 0
Katılım
18 Ocak 2025
Mesajlar
52
Tepkime puanı
2
Konum
Bursa
Web sitesi
ko-turkey.net
@Prepective
Konu Sahibi
Bu konuda, SQL Server üzerinde kullanılan DISTINCT komutunun ne işe yaradığını ve nasıl kullanıldığını öğreneceğiz. Ayrıca konuyu Knight Online örneğiyle açıklayarak daha anlaşılır hale getireceğiz.

1. DISTINCT Komutu Nedir?​

DISTINCT, SQL sorgularında aynı veriden birden fazla bulunan kayıtları tekilleştirmek için kullanılır. Özellikle tekrar eden veriler içeren tablolarda, her benzersiz (unique) değeri sadece bir kez döndürür.
Bir başka ifadeyle, belirli bir sütunda aynı değerden birden fazla varsa, sadece ilk karşılaşılan veri sonuçlara dahil edilir. Böylece veri tekrarlarının önüne geçilir.

2. Knight Online ITEM Tablosu Üzerinden Açıklama​

Server dosyalarıyla çalışırken sıkça kullanılan tablolardan biri olan ITEM tablosu üzerinden bu konuyu somutlaştıracağız.
Öncelikle, elimizde aşağıdaki gibi örnek bir ITEM tablosu olduğunu varsayalım:
NumstrNameKindDamage
1001Iron Bow670
1001Iron Bow670
1002Chitin Bow660
1003Flame Bow665
1002Chitin Bow660
Bu tabloda dikkat ederseniz:

  • Num değeri 1001 olan kayıt iki kez tekrar etmiş.

  • Num değeri 1002 olan kayıt da iki kez tekrar etmiş.
Eğer bu tabloyu doğrudan SELECT komutuyla çeker ve server dosyasına yüklerseniz, aynı item verisini birden fazla kez yüklemiş olursunuz. Bu da gereksiz RAM kullanımı ve veri bütünlüğü açısından sorun oluşturur.

3. DISTINCT Olmadan Kullanım​


Aşağıdaki sorgu tüm verileri, yani tekrar eden kayıtları da getirir:

SQL:
SELECT Num, strName, Kind, Damage
FROM ITEM

Sonuç şu şekilde olur:
NumstrNameKindDamage
1001Iron Bow670
1001Iron Bow670
1002Chitin Bow660
1003Flame Bow665
1002Chitin Bow660

4. DISTINCT ile Kullanım​


Aynı itemin sadece bir kez çekilmesini istiyorsak, DISTINCT komutunu kullanmamız gerekir:

SQL:
SELECT DISTINCT Num, strName, Kind, Damage
FROM ITEM

Bu sorgunun sonucu şu şekilde olur:
NumstrNameKindDamage
1001Iron Bow670
1002Chitin Bow660
1003Flame Bow665
Görüldüğü gibi her item sadece bir kez listelenmiş olur. Böylece gereksiz tekrarlar ortadan kaldırılır.

5. Dikkat Edilmesi Gereken Nokta​



  • DISTINCT sadece başına eklediğiniz sütunu değil, seçtiğiniz tüm sütunları birlikte değerlendirir. Yani Num aynı olsa bile, diğer alanlar farklıysa kayıt yine listelenebilir.

  • Eğer yalnızca Num alanında tekrar istemiyorsanız ve diğer sütunlar farklılık gösterse bile görmezden gelinmesini istiyorsanız, sadece Num alanını çekmeniz gerekir:

SQL:
SELECT DISTINCT Num
FROM ITEM

Bu durumda sadece benzersiz Num değerleri döndürülür.




6. Server Tarafında Kullanım Tavsiyesi​


Server dosyalarına veri aktarırken, ITEM, MAGIC, NPC gibi tablolarda aynı verinin birden fazla kez yüklenmesini istemiyorsanız mutlaka DISTINCT komutunu kullanın. Bu sayede:


  • RAM kullanımı düşer,
  • Performans artar,
  • Veri bütünlüğü korunmuş olur.



7. Sonuç​


DISTINCT komutu, SQL sorgularında tekrar eden verileri filtrelemek için basit ama etkili bir yöntemdir. Knight Online gibi büyük veri tabanlı oyun sunucularında, verilerin tekilleştirilmesi veri güvenliği ve performans açısından kritik öneme sahiptir.
 
Geri
Üst