Merhabalar,
PHP - Mysql kullanıcıydım fakat, son 1 kaç aydır C# , MSSQL üzerinde yoğunlaştım, aklımda SQL ile ilgili bir kaç soru var birde sizler yanıtlayabilirseniz sevinirim.
-VIEW ne zaman, hangi durumlarda ihtiyaç duyarız?
- FUNCTIONS ne zaman, hangi durumlarda ihtiyaç duyarız?
- STORED PROCEDURE ne zaman, hangi durumlarda ihtiyaç duyarız? , Fonksiyonlar ile arasındaki fark nedir?
- INDEX ne zaman, hangi durumlarda ihtiyaç duyarız? örnek verebilirmisiniz ?
Sql Hakkında Bir kaç soru
4
●688
- 26-06-2014, 12:22:59Kimlik doğrulama veya yönetimden onay bekliyor.View (bknz), sanal tablo oluşturmaya yarar, istediğin sonuca göre sanki veritabanında gerçekten öyle bir tablo varmış gibi davranmanı sağlar, performansı ciddi derecede artırır. En basitinden müşterilerin ödenmiş faturalarını sorgulamak istiyorsun diyelim ve bunu birçok yerde kullanıyorsun. Bunun için her seferinde sorgulama yapmak yerine bir view yazıyorsun ve sonrasında sanal tablo ile çalışmaya başlıyorsun.
Function (bknz), istenilen veri tipinde geri dönüş yapabilen sorgudur. Örneğin 20 yaş üzerindeki kullanıcılarının sayısını istiyorsun. Bunun için function yazabilir, bu function'ı view'da, stored procedure'de kullabilirsin.
Ben şahsen sadece karışık bir sorgu yazıyorsam ve içerisinde birden fazla tablo varsa ve sadece toplam değer, ortalama gibi değerler ile çalışacaksam function yazıyorum. Çünkü tek başına kullanmaktansa direk stored procedure ile daha iyi performans alırsın.
Stored Procedure (bknz), hemen hemen her zaman, her durumda kullanabilirsin. Veri ekleme, silme, güncelleme gibi basit işlemlerden tut birçok üst düzey işleri de yapabilirsin. Kısaca sql sorgusu çalıştırmana yarar. Sql'in içinde tutulur, bir kez derlenir ve sonra sürekli kullanılır. Ne istersen onu geri verir. Eğer dinamik bir procedure yazmıyorsan daha güvenlidir. Sql Server'ın en güzel olayıdır bana göre.
Özellikle bir orm aracı kullanıyorsan ve ciddi sorgular yapıyorsan orm performans olarak direk çöker, bu gibi durumlarda sp kullanmak en iyi çözümdür.
Index (bknz), bir tablo üzerinde o tabloya özel bir belirteç üretir ve bu belirteç sayesinde sonuca çok hızlı bir şekilde ulaşmayı sağlar, kısaca daha az veri okuyarak daha hızlı sonuç getirme mantığı. Büyük çaplı projelerde arama sonuçları gibi sorgularda kullanılır. 2 çeşit index tipi vardır, clustered ve nonclustred. Clusted fiziksel olarak veriler index türüne göre alfabetik sıralanır ve bir tabloda bir tane vardır. Nonclustred ise index verinin kendisi değil sadece adresidir (yani veriyi göstermez, verinin nerde olduğunu gösterir) ve sıralama tipi yoktur. Performansı artırır fakat gereksiz indexler ve hatalı kullanımlar performansı ciddi derecede düşürür. - 26-06-2014, 13:15:49Üyeliği durdurulduÖncelikle açıklamanız için teşekkür ederim. Bu açıklamanız ile View , Function ve Index kullanım alanlarını iyi anladım sıkıntı yok fakat, SP' de takıldım, sanırım parametre alma ihtiyacı duyduğumuzda SP kullanmalıyız, yoksa ve sadece aynı sorguları tekrarlamamak Select işlemi için View'i kullanıyoruz sanırım doğrumudur ?rob33n adlı üyeden alıntı: mesajı görüntüle
- 26-06-2014, 13:32:54View ile SP farklı şeyler.
SP'yi her amaç için kullanabilirsin. Parametre almasına gerek yok. İkisinide tekrar yapmamak için kullanabilirsin.
Aradaki fark SP gerçek tablolar ile çalışır, genellikle veri çekme, silme, güncelleme gibi sorgular için kullanılır.
View olmayan bir tabloyu yaratmanı ve onun üzerinden çalışmanı sağlar. - 30-06-2014, 16:51:24Viewi genelde stored procedurelarda ortak çağıracağın uzun SQL select sorguları için kullanırsın. mesela üyeliği onaylanmış 1 den fazla mesajlı üyeleri AktifUyeler adlı viewa geçirebilirsin. SPlerde bu yapıdan normal tablo gibi select çekebilirsin.
SP ise şunun için, mesela bir aspx sayfa yapıyorsun, username ve password vererek üye bilgilerini alıcaksın. Ama bir de IPAD programın var onu da bağladın, üye tablosunda bir değişiklik olsa bile sp içeriğini değiştirdiğinde hem siten hem de IPAD programın çalışmaya devam eder. bunun yanında SP'ler parametrik olduğundan sql string toplama işlemine sokmadan kullanacağından sql injection açıklarından da korunmuş olursun.
daha uzun işlemlerde de performans olarak büyük fayda görürsün. (Aspxde 10 selectle çekeceğin veriyi 1 sp ile çekebilirsin duruma göre )