Forum
Merhaba
Yazılan bir programda linq sorgusunun çalışması biraz uzun zaman alıyor. Bu zamanı nasıl kısaltabilirim ?
Teşekkürler
Bu süreleri kısaltacak sihirli bir değnek yok maalesef. Sorugunuzu paylaşırsanız bir kaç optimizasyon ve revizyon önerebilirim.
Sorgunuzun uzun sürmesinin birkaç nedeni olabilir;
- Sunucudaki yoğunluk
- Veritabanı yapısında çok fazla ilişki olması
- Veritabanı üzerinde çok fazla veri olması
- Sorguların optimizasyonunun yapılmamış olması
Sorgu optimizasyonunu en basit haliyle açmak gerekirse, sorguda kullandığınız filtrelerin önce hangisinin işleneceği hızı etkileyebilir. Ard arda 2 filtre kullanıyorsanız örneğin önce üyeler tablosunda aktif olanları, sonra ismi Yalçın olanları getiriyorsunuz diyelim. 1 milyon kayıt içinde IsActive=true diye filtreleme yaptığınızda 999.900 kayıt dönüyorsa ardından ismi Yalçın olanları getirdiğinizde 10.000 kayıt dönüyorsa, siz önce isim filtresini uygulamalısınız. Bu sayede ilk gelen veri azalmış olacak, ikinci filtre için daha az satırda arama yapacaktır.
Sorgunuzun uzun sürmesinin birkaç nedeni olabilir;
- Sunucudaki yoğunluk
- Veritabanı yapısında çok fazla ilişki olması
- Veritabanı üzerinde çok fazla veri olması
- Sorguların optimizasyonunun yapılmamış olması
Sorgu optimizasyonunu en basit haliyle açmak gerekirse, sorguda kullandığınız filtrelerin önce hangisinin işleneceği hızı etkileyebilir. Ard arda 2 filtre kullanıyorsanız örneğin önce üyeler tablosunda aktif olanları, sonra ismi Yalçın olanları getiriyorsunuz diyelim. 1 milyon kayıt içinde IsActive=true diye filtreleme yaptığınızda 999.900 kayıt dönüyorsa ardından ismi Yalçın olanları getirdiğinizde 10.000 kayıt dönüyorsa, siz önce isim filtresini uygulamalısınız. Bu sayede ilk gelen veri azalmış olacak, ikinci filtre için daha az satırda arama yapacaktır.
Peki JOIN'lerde öncelik sırasını nasıl belirleriz ?