Puan
0
Çözümler
0
- Katılım
- 18 Ocak 2025
- Mesajlar
- 52
- Tepkime puanı
- 2
- Konum
- Bursa
- Web sitesi
- ko-turkey.net
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.
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.
Öncelikle, elimizde aşağıdaki gibi örnek bir
Bu tabloda dikkat ederseniz:
Aşağıdaki sorgu tüm verileri, yani tekrar eden kayıtları da getirir:
Sonuç şu şekilde olur:
Aynı itemin sadece bir kez çekilmesini istiyorsak,
Bu sorgunun sonucu şu şekilde olur:
Görüldüğü gibi her item sadece bir kez listelenmiş olur. Böylece gereksiz tekrarlar ortadan kaldırılır.
Bu durumda sadece benzersiz Num değerleri döndürülür.
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:
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.
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 olanITEM
tablosu üzerinden bu konuyu somutlaştıracağız.Öncelikle, elimizde aşağıdaki gibi örnek bir
ITEM
tablosu olduğunu varsayalım:Num | strName | Kind | Damage |
---|---|---|---|
1001 | Iron Bow | 6 | 70 |
1001 | Iron Bow | 6 | 70 |
1002 | Chitin Bow | 6 | 60 |
1003 | Flame Bow | 6 | 65 |
1002 | Chitin Bow | 6 | 60 |
Num
değeri 1001 olan kayıt iki kez tekrar etmiş.
Num
değeri 1002 olan kayıt da iki kez tekrar etmiş.
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:
Num | strName | Kind | Damage |
---|---|---|---|
1001 | Iron Bow | 6 | 70 |
1001 | Iron Bow | 6 | 70 |
1002 | Chitin Bow | 6 | 60 |
1003 | Flame Bow | 6 | 65 |
1002 | Chitin Bow | 6 | 60 |
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:
Num | strName | Kind | Damage |
---|---|---|---|
1001 | Iron Bow | 6 | 70 |
1002 | Chitin Bow | 6 | 60 |
1003 | Flame Bow | 6 | 65 |
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. YaniNum
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, sadeceNum
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.