Post Page Advertisement [Top]

Merhaba,
Daha önceki yazımızın devamı olan bu sayfada SQL sorgu performansını artırmaya devam ediyoruz.

Okurken ne dinlemeli ?



13. Veritabanı ve Store Procedure isimlerini yazarken tam isim ile yazmak bize daha hız kazandıracaktır.Çünkü ilgili tablo ve prosedür'ün bulunması zaman alabilir ve bulunduğunda da tekrar çağrım adına cach'lenecektir. Aşağıdaki gibi:





























14. Store Procedure isimlendirmelerinde  "sp_" ön ekini kullanmayalım bu DB'de system 
 prosedür'leri için ayrılmıştır. Prosedür'ün bulunması için fazla zaman harcamaya sebep olur.




15.  IN yerine EXISTS NOT IN yerine ise EXISTS kullanmak daha iyidir. Çünkü  IN null olan satırları da sayar.EXISTS sadece sonuç ile ilgili false /true dönerken IN tüm satırları döner.


 16.  Belli bir ay ve yıl karşılaştırmasını farklı şekilde yapabiliriz DAY MONTH gibi keywordleri kullanmadan daha hızlı bir çalışma için aşağıdaki gibi düşünebiliriz.


17.  Tarih karşılaştırması yaparken izlenmesi gereken performanslı bir yol daha. 



18.  GROUP BY 'da gün ay yıla göre bir gruplama yapacaksak, yapmamamız gerekenler:



19.  Örneğin bir X tablosundan belirli where koşulları ile veri çekip bu sonuçların her bir satırına ihtiyaç duyan ve bu bilgilerle yeni işlemler yapacak olduğumuzu düşünelim (Update -Insert gibi).İlk olarak aklımıza CURSOR X tablosunu ilişkilendirip her satır verisi ile işlem yapmak ya da X tablosundan sorguyu çekip temp tabloya atıp while ile dönmek gelebilir. Oysaki X tablosundan istenilen sorguyu çekip diğer tablolar ile JOIN yapmak büyük ölçüde hızlı kazandıracaktır.


  Yazımızın sonuna gelmiş bulunmaktayız , okuduğunuz ilgilendiğiniz için teşekkürler ve son bir konu 'bonus' : Rollback yaptığımızda temp tablolar drop oluyor mu? Tekrar drop komutu mu yazmalıyız? 
İyi haber genellikle transaction rollback olduğunda temp tablolar silinir fakat run-time hatalarında temp tablolar silinmez bunu engellemek için defaultta OFF olan  özelliğini aşağıdaki gibi ON yapıp kullanabiliriz.

GO
SET XACT_ABORT ON;
GO


Ve tabiiki SQL server Profiler kullanmayı unutmayalım sorguları inceleyip sürelerine kullandığı kaynaklara bakabiliriz. Database Engine Service Tunning Advisor'den de tavsiye alabiliriz.Bu iki tool 'un kullanımına ilerleyen yazılarımda değinmeyi düşünüyorum.

Bu iki yazıyı yazarken kullandığım kaynaklar:
https://stackoverflow.com/questions/17354219/how-to-speed-up-sql-queries-indexes
https://dzone.com/articles/6-simple-performance-tips-sql
http://www.winwire.com/25-tips-to-improve-sql-query-performance/
https://sqlperformance.com/2014/09/sql-plan/rewriting-queries-improve-performance
https://www.datavail.com/blog/three-ideas-returning-microsoft-sql-queries-faster/
https://www.slideshare.net/BrianGallagher4/sql-joins-and-query-optimization
http://searchsqlserver.techtarget.com/tip/Avoid-cursors-in-SQL-Server-with-these-methods-to-loop-over-records
https://coderwall.com/p/jefi1q/basic-tips-on-tuning-sql-server-queries
https://www.apriorit.com/dev-blog/381-sql-query-optimization
https://stackify.com/performance-tuning-in-sql-server-find-slow-queries/
http://beginner-sql-tutorial.com/sql-tutorial-tips.htm
http://www.vertabelo.com/blog/technical-articles/5-tips-to-optimize-your-sql-queries
https://www.codeproject.com/Articles/22853/SQL-Server-Performance-Tips-and-Guidelines
http://info.110consulting.com/blog/bid/386688/5-Ways-to-Speed-Up-Your-SQL-Queries
http://www.sqlservercentral.com/articles/Performance+Tuning/67427/
https://www.catswhocode.com/blog/10-sql-tips-to-speed-up-your-database
http://www.monitis.com/blog/30-ms-sql-performance-tips/
https://sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=131674
http://blog.sqlconcepts.co.nz/2012/07/cursors-and-while-loops-reply.html
https://www.red-gate.com/simple-talk/sql/performance/writing-efficient-sql-set-based-speed-phreakery/
http://www.sqlpassion.at/archive/2014/04/08/improving-query-performance-by-using-correct-search-arguments/
https://stackoverflow.com/questions/15344661/what-is-the-optimal-way-to-compare-dates-in-microsoft-sql-server
https://blogs.msdn.microsoft.com/arvindsh/2008/12/02/t-sql-anti-pattern-of-the-day-comparing-datetime-field-with-date-only-literal/
https://sqlperformance.com/2012/09/t-sql-queries/what-is-the-most-efficient-way-to-trim-time-from-datetime
https://stackoverflow.com/questions/133081/most-efficient-way-in-sql-server-to-get-date-from-datetime
http://diegworld.blogspot.com.tr/2010/09/sql-server-performance-querying-by-date.html
http://weblogs.sqlteam.com/jeffs/archive/2007/09/10/group-by-month-sql.aspx
https://explainextended.com/2009/09/15/not-in-vs-not-exists-vs-left-join-is-null-sql-server/
http://www.sqlservercentral.com/blogs/sqlinthewild/2010/03/23/left-outer-join-vs-not-exists/
https://community.modeanalytics.com/sql/tutorial/sql-joins-where-vs-on/
https://stackoverflow.com/questions/30559591/what-is-the-difference-between-using-filter-condition-in-where-clause-and-join-c
https://stackoverflow.com/questions/14739380/does-it-drop-temp-table-created-in-transaction-if-rollback-transaction-in-sql
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-xact-abort-transact-sql
https://stackoverflow.com/questions/8023183/how-to-set-set-xact-abort-on-in-a-sql-server-transaction

Sağlıkla kalın ,hoşça kalın.


1 yorum:

Bottom Ad [Post Page]