28 Haziran 2015 Pazar

Temel SQL Dersi 7: TOP & LIMIT Elemanı





TOP & LIMIT Elemanı

SELECT sorgusu ile dönen kayıtların belli bir sayıda olmasını istememiz halinde TOP (mySQL için LIMIT) anahtar sözcüğünü kullanırız. Özellikle binlerce kayıt bulunan çok geniş tablolarda bu komut performans açısından oldukça faydalı olabilir. Bunu aşağıdaki örnekler ile daha iyi anlayacaksınız.
Not: TOP özelliği SQL server, MySQL ve Oracle’da farklı anahtar sözcükler ile ifade edildiğinden söz-dizimde de farklılıklar var.
Örnek sorgularımız için kullanacağımız Uyeler tablosu:
uye_adiisimsoyisime-postacinsiyet
osman.eOsmanErolosman.e@osman.comE
derya.zDeryaZarderya.z@derya.comK
meryem.aMeryemArmeryem.a@meryem.comK
emre.aEmreAydınemre.a@emir.comE
levent.dLeventDenizlevent.d@levent.comE


Tablodan ilk 2 kaydı seçmek istiyoruz
SQL Server (Ms Access’de dahil ) Söz-dizimi  (Syntax)
SELECT TOP 2 * FROM uyeler
MySQL Sözdizimi
SELECT *
FROM uyeler
LIMIT 2
Oracle Sözdizimi
SELECT *
FROM uyeler
WHERE ROWNUM <=2
Yukarıdaki sorguların sonucu aşağıdaki gibi olacaktır:
uye_adiisimsoyisime-postacinsiyet
osman.eOsmanErolosman.e@osman.comE
derya.zDeryaZarderya.z@derya.comK


TOP ifadesinin performans ve hız açısından önemini öne çıkaran bir örnek:
Binlerce üyesi olan bir forum sitesinin kullanıcı girişi bölümünün kullandığı SQL kodunu yazmaya çalışalım:
Not: Bu örnekte kullanılan uyeler tablosunu yukarıdaki ile karıştırmayın. Bu tabloda kullaniciadi ve sifre alanlarının da bulunduğunu farz edin.
SQL Server
SELECT TOP 1 * FROM uyeler
WHERE kullaniciadi = 'derya.z' AND sifre = '0947'
MySQL
SELECT * FROM uyeler
WHERE kullaniciadi = 'derya.z' AND sifre = '0947' LIMIT 1
Soru: Sizce bu sorgularda TOP veya LIMIT ifadelerini neden 1 ile sınırladık?
Cevap: Çünkü bu kullanıcı adı ve şifreye sahip yalnızca 1 kullanıcı olacağı aşikardır. O halde 50 bin kayıtlı bir tabloda “derya.z” isimli kullanıcı diyelim ki 10 bininci sırada bulunduğunda geriye kalan 40 bin satırın aranmasına gerek yoktur. Özetle TOP işlevi sonuç-kümesinin ilk belli sayıda satırını/kaydını getirir. O sayı kadar kayıt bulunduğunda sorgunun işletimi sonlandırılır. Her saniye onlarca, yüzlerce hatta binlerce kişinin giriş yaptığı sitelerde bu tür ufak iyileştirmeler büyük performans kazançları sağlayabilir.
Not: Sonuç-kümesi (result-set) kavramının zihninizde oturmuş olması çok önemli.

Hiç yorum yok:

Yorum Gönder