Forum
Arkadaşlar merhaba, sorum şu şekildedir.
MS SQL içinbir sorgu oluştururken;
(... where year(tarih)="year(date())" and month(tarih)="month(date())" and day(tarih)="day(date())" and Sil=1 and Aktif=1) gibi bir sorgu oluşturduğumuzda sorgunun en başına Sil=1 and Aktif=1 and (Gün sorgusu başta) and (yıl sorgusu sonda) gibi bir sorgu kullanırsam hız farkı oluşur mu?
Sorguyu web üzerinden yaptığım için timer'da tutsam farkı bir türlü sağlıklı şekilde göremiyorum. (Aynı sorguda bile zaman farkı oluşuyor)
Ayrıca veritabanında tablo alanlarında arama sorguları için index oluşturma nedir? Çok kısa mantığını ve olabiliyorsa kısaca uygulamasını anlatabilir misiniz?
Bilgi verirseniz sevinirim. Teşekkürler
Merhaba,
1. soruda where kriterlerinin sırasını değiştirmek hızı arttırmaz tek sorgu için.fakat kolonları fonksiyon'a koyduğunuzdan burada performans düşecektir. ayrıca fonksiyon'a koyduğunuz alanlar üzerinde index vs varsa (index üzerinden hızlı arama yapar) bu index'leri de kullanamaz sql engine.
2. timer e bağlı olarak bu query'yi sql e yollasanız dahi sql kendi üzerindeki system date i alıp işleyecektir. burada tam olarak dediğiniz farklı bişey mi anlayamadım.
3. index'i kısaca telefon fihrist'ine benzerebiliriz aslında. database index yapıları b tree index modeli olarak yapılanır. internette bolca miktarda örnek vardır.
www.cozumpark.com/files/folders/246032/download.aspx
http://www.cozumpark.com/blogs/sql/archive/2011/01/15/sql-server-_3101_ndex-olu-turma.aspx
Sevgili arkadaşım, ilgin için çok teşekkür ederim.
Timer'dan kastım iki sorgu arasındaki hız farkını anlayabilmek için sayfanın en başına ve en sonuna iki timer ekleyip aradaki farkı yazdırarak sayfa işlenme süresi almaktı.
Bu soruyu sorma sebeplerimden biri Sql'de tarih sorgusu yaparken genelde hata ile karşılaşırım. Tarih formatı aynı sunucuda yer alan iki veritabanında bile farkı formatlar da karşıma çıkabiliyor. Bu sebepten tarih sorgularımda ilgili alanın ve date() fonksiyonunun gün ay yıl karşılığını alarak işlem yapıyorum. Tarih=Date() ya da Tarih=Date()-1, bir çalışır bir çalışmazken year,month,day(Tarih)=year,month,day(Date()) benim için daha sorunsuz olmuştur. Yıl sorgusunu önce yazmak ile gün sorgusunu önce yazmak arasında herhangi bir fark var mı öğrenmek istemiştim.
Ayrıca verdiğiniz linklerden index i inceleyeceğim.
Tekrar teşekkürler.
Kolay gelsin.
Sevgili arkadaşım, ilgin için çok teşekkür ederim.
Timer'dan kastım iki sorgu arasındaki hız farkını anlayabilmek için sayfanın en başına ve en sonuna iki timer ekleyip aradaki farkı yazdırarak sayfa işlenme süresi almaktı.
Bu soruyu sorma sebeplerimden biri Sql'de tarih sorgusu yaparken genelde hata ile karşılaşırım. Tarih formatı aynı sunucuda yer alan iki veritabanında bile farkı formatlar da karşıma çıkabiliyor. Bu sebepten tarih sorgularımda ilgili alanın ve date() fonksiyonunun gün ay yıl karşılığını alarak işlem yapıyorum. Tarih=Date() ya da Tarih=Date()-1, bir çalışır bir çalışmazken year,month,day(Tarih)=year,month,day(Date()) benim için daha sorunsuz olmuştur. Yıl sorgusunu önce yazmak ile gün sorgusunu önce yazmak arasında herhangi bir fark var mı öğrenmek istemiştim.
Ayrıca verdiğiniz linklerden index i inceleyeceğim.
Tekrar teşekkürler.
Kolay gelsin.
Merhaba,
tarih format iki tırnak içerisinde 'yyyy-aa-gg' şeklinde olmalıdır.
Örneğin
SELECT * FROM tabloadi WHERE Tarih = '2013-03-09'
mrb.
Eta SQL de aşağıdaki sorguda [@dbname] alanına parametre ile database adını getirmek istiyorum.
SELECT CARKOD, CARUNVAN, CARBORCTOP, CARALACAKTOP, CARBAKIYE
FROM [@dbname].[dbo].[CARKART] WITH (NOLOCK)
WHERE (CARBAKIYE <> '0') AND (CARKOD BETWEEN '120' AND '121')
acil yardım lütfen
@DBNAME i declare ettikten sonra set komutuyla tanımlayabilirsiniz ya da başka bir yerden select edebilirsiniz.
@DBNAME i declare ettikten sonra set komutuyla tanımlayabilirsiniz ya da başka bir yerden select edebilirsiniz.
bir örnek ile açıklamanız mümkün mü
@DBNAME i declare ettikten sonra set komutuyla tanımlayabilirsiniz ya da başka bir yerden select edebilirsiniz.
bir örnek ile açıklamanız mümkün mü