- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
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.
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ı.")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.
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!)
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.
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.
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.
Yorumlar
Yorum Gönder