GeliştiriciÜcretsiz yapay zekâ aracı
SQL Sorgu Açıklayıcı ve Optimizasyon Önerici
T-SQL sorgunuzu yapıştırın; ne yaptığının Türkçe açıklamasını, SARGable olmayan koşulları, NOLOCK ve SELECT * gibi riskleri, indeks önerilerini ve iyileştirilmiş yazımını alın.
- Verileriniz saklanmazDosya ve girdiler yalnız işlem süresince bellekte işlenir.
- Her gün ücretsiz hakTelefonunuzu doğrulayınca hakkınız artar.
iyonosfer.com/araclar ile hesaplandı · SQL Sorgu Açıklayıcı ve Optimizasyon Önerici
SQL sorgusu nasıl incelenir?
Yavaş bir SQL Server sorgusunun nedeni çoğu zaman donanım değil, sorgunun yazılış biçimidir. Aynı sonucu veren iki sorgudan biri indeksi kullanıp milisaniyede dönerken diğeri milyonlarca satırı baştan sona tarayabilir. Bu araç sorgunuzu iki katmanda inceler: önce kural tabanlı bir kontrol bilinen kötü kalıpları satır numarasıyla işaretler, ardından yapay zekâ sorgunun ne yaptığını Türkçe anlatır, riskleri yorumlar, indeks önerir ve iyileştirilmiş bir yazım verir. Sorgunuz hiçbir veritabanında çalıştırılmaz.
Kural tabanlı kontroller
| Kalıp | Neden sorun? |
|---|---|
UPDATE / DELETE WHERE'siz | Tablodaki tüm satırlar etkilenir; en tehlikeli hatadır. |
| Birleştirilmiş dinamik SQL | EXEC(@sql) içine değişken eklemek SQL enjeksiyonuna açıktır; sp_executesql ve parametre kullanın. |
SELECT * | Gereksiz sütunlar okunur, kapsayan indeks kullanılamaz. |
WHERE YEAR(Tarih) = 2026 | Sütun fonksiyon içinde olduğu için koşul SARGable değildir; indeks araması yapılamaz. |
LIKE '%metin' | Baştaki joker indeksin kullanılmasını engeller. |
NOLOCK | Kaydedilmemiş ya da iki kez okunan satırlar dönebilir. |
Farklı sütunlar OR ile | İyileştirici çoğu zaman tek indeks kullanamaz; UNION ALL daha hızlı olabilir. |
NOT IN (SELECT …) | Alt sorgu NULL döndürürse hiç satır gelmez; NOT EXISTS güvenlidir. |
| İmleç, skaler fonksiyon, gereksiz sıralama | Satır satır işlem ve paralelliği engelleyen yapılar. |
Örnek
-- Önce: tarih sütunu fonksiyon içinde, indeks kullanılamaz SELECT SiparisNo, Tutar FROM dbo.Siparis WHERE YEAR(Tarih) = 2026; -- Sonra: aralık koşulu, Tarih üzerindeki indeksle arama yapılır SELECT SiparisNo, Tutar FROM dbo.Siparis WHERE Tarih >= '2026-01-01' AND Tarih < '2027-01-01'; CREATE INDEX IX_Siparis_Tarih ON dbo.Siparis (Tarih) INCLUDE (SiparisNo, Tutar);
İkinci sorgu, 2,4 milyon satırlık bir tabloda tüm tabloyu taramak yerine yalnız 2026 yılına ait satırları okur. INCLUDE ile eklenen sütunlar sayesinde tabloya geri dönmeye (key lookup) de gerek kalmaz.
Daha iyi sonuç için
- Tablo ve indeks tanımlarını (
CREATE TABLE,CREATE INDEX) ekleyin; öneriler mevcut indekslerinizi hesaba katar. - Tabloların yaklaşık satır sayısını yazın; küçük tablolarda indeks önerisi gereksiz olabilir.
- Gizli tablo ya da şema adlarını paylaşmak istemiyorsanız değiştirerek yapıştırın; metin yapay zekâ servislerine gönderilir.
- Önerileri önce test ortamında deneyin ve yürütme planını (actual execution plan) karşılaştırın.
Sıkça sorulan sorular
SARGable ne demek?
Search ARGument ABLE: koşulun indeks üzerinde arama (seek) yapılabilecek biçimde yazılmasıdır. WHERE YEAR(Tarih) = 2026 yerine WHERE Tarih >= '2026-01-01' AND Tarih < '2027-01-01' yazıldığında indeks kullanılabilir.
NOLOCK kullanmak neden riskli?
NOLOCK (READ UNCOMMITTED) kilit beklemez ama henüz kaydedilmemiş, sonradan geri alınacak satırları okuyabilir; sayfa bölünmeleri sırasında aynı satırı iki kez okuyabilir ya da atlayabilir. Raporlarda tutarlılık için veritabanında READ_COMMITTED_SNAPSHOT açmak daha güvenlidir.
Sorgum çalıştırılıyor mu?
Hayır. Sorgunuz hiçbir veritabanında çalıştırılmaz; yalnız metin olarak incelenir. Önerilen indeks ve yeniden yazımlar da yalnız metin olarak gösterilir.
Yazdığım SQL nereye gidiyor?
Kural tabanlı kontrol sunucumuzda yapılır. Açıklama ve öneriler için sorgu metni yapay zekâ servislerine gönderilir; bu yüzden gizli tablo ya da şema adlarını değiştirerek yapıştırmanızı öneririz. Sorgu saklanmaz.
İlgili araçlar
Daha fazla hak alın
Cep telefonunuzu SMS koduyla doğrulayın; yapay zekâ araçlarında, mizan analizinde ve site check-up'ta günlük hakkınız yükselsin. Ücretsizdir.
Kodu girin
· Yeni kod için sn