Resim

MySQL LIMIT (Sonuç Sınırlandırmak)

MySQL LIMIT (Sonuç Sınırlandırmak)

Büyük veritabanlarında SELECT sorgusu çalıştırmak binlerce hatta milyonlarca kayıt döndürebilir. Uygulamanın performansını artırmak ve kullanıcının sadece ilk birkaç kaydı görmesini sağlamak için sonuç kümesini sınırlandırmamız gerekir. MySQL'de bu sınırlandırma işlemi, LIMIT komutu ile yapılır. Bu bölümde, veritabanından çekeceğimiz kayıt sayısını nasıl kısıtlayacağımızı ve ORDER BY ile LIMIT komutlarını birlikte kullanarak en yeni veya en popüler kayıtları nasıl listeleyeceğimizi göreceğiz.

Kodun Tamamı

select_limit.py adında yeni bir dosya oluşturalım:
import mysql.connector 
from config import DB_CONFIG
try:
    # 1. Veritabanına Bağlanma
    mydb = mysql.connector.connect(**DB_CONFIG)
    mycurser = mydb.cursor()    
    # 2. Temel SELECT Sorgusu
    SELECT_SQL = "SELECT * FROM musteriler"   
    # 3. Sıralama ve Sınırlandırma Sorgusunu Oluşturma
    # ORDER BY isim DESC: İsimlere göre Z'den A'ya (Azalan) sırala
    # LIMIT 3: Sadece ilk 3 kaydı çek.
    ORDER_BY_LIMIT_SQL = f"{SELECT_SQL} ORDER BY isim DESC LIMIT 3"    
    # 4. Sorguyu Çalıştırma
    mycurser.execute(ORDER_BY_LIMIT_SQL)   
    # 5. Sonuçları Çekme
    isim_sirali = mycurser.fetchall()   
    # 6. Sınırlandırılmış Veriyi Yazdırma
    print("\n--- İSME GÖRE TERS SIRADA (Z-A) İLK 3 KAYIT ---")
    if isim_sirali:
        for kayit in isim_sirali:
            # Tuple elemanlarını ekrana yazdır
            print(f"ID: {kayit[0]} İsim: {kayit[1]} Email: {kayit[2]}Kayıt Tarihi: {kayit[3]}")
    else:
        print("Tabloda hiç kayıt bulunamadı.")        
except mysql.connector.Error as err:
    # Genel hataları yakalama
    if err.errno == 1050:
        print("Tablo zaten mevcut.")
    else:
        print(f"Bağlantı hatası: {err}")
        print("Lütfen bağlantı ayarlarını kontrol edin.")
finally:
    # Bağlantıları kapatma
    if 'mycurser' in locals() and mycurser:
        mycurser.close()
    if 'mydb' in locals() and mydb and mydb.is_connected():
        mydb.close()
        print("MySQL bağlantısı kapatıldı.")

Kodun Açıklaması

Bu kod, büyük bir sonuç kümesinden yalnızca ihtiyacımız olan belli bir kısmını çekme mekanizmasını gösterir.

  1. Sorgu Yapısının Sırası:

    • SELECT ...

    • FROM ...

    • WHERE ... (Filtreleme varsa)

    • ORDER BY ... (Sıralama varsa)

    • LIMIT ... (Sınırlandırma en sonda gelir!)

  2. ORDER BY ve LIMIT Kullanımı:

    • ORDER BY isim DESC: İlk olarak tüm kayıtlar isim sütununa göre Z'den A'ya doğru sıralanır.

    • LIMIT 3: Bu sıralanmış listeden sadece ilk 3 kaydı seçer. Bu kombinasyon, örneğin "en son eklenen 10 ürün" veya "en çok satan 5 ürün" gibi listeleri oluşturmak için vazgeçilmezdir.

  3. Sınırlandırma Değerleri:

    • LIMIT 3: Sadece ilk 3 kaydı çeker.

    • Sayfalama İçin Kullanım (OFFSET): LIMIT komutu, LIMIT [başlangıç], [adet] şeklinde de kullanılabilir. Örneğin, LIMIT 10, 5 demek, ilk 10 kaydı atla (OFFSET) ve ondan sonraki 5 kaydı çek demektir. Bu yapı, web sitelerindeki sayfalama (pagination) sistemlerinin temelini oluşturur.

  4. Performans Avantajı: Veritabanı motoru, bu sorguyu gördüğünde, tablonun tamamını tarayıp geri göndermek yerine, sıralamayı bitirir bitirmez 3. kayıtta durur. Bu, özellikle tabloda çok fazla veri olduğunda, uygulamanızın hızını önemli ölçüde artırır.

📹ÖĞRENDİKLERİNİZİ PEKİŞTİRİN:
Hemen aşağıdaki videomuza tıklayın. Adım adım ilerleyerek öğrendiklerinizi görsel olarak pekiştirin ve bir sonraki konuya hatasız bir şekilde geçin!



Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?