Forum

SQL Sorguda sıralam...
 
Bildirimler
Hepsini Temizle

SQL Sorguda sıralama

9 Yazılar
5 Üyeler
0 Reactions
3,011 Görüntüleme
(@ZaferDANYILDIZ)
Gönderiler: 44
Trusted Member
Konu başlatıcı
 

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

 
Gönderildi : 28/02/2013 17:15

(@GokhanDOGAN)
Gönderiler: 780
Prominent Member
 

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://turgaysahtiyan.com/post/Webcast-Video-SQL-Server-Onculeri-SQL-Servere28099da-Index-Kavramc4b1-Performance-Tuning-ve-Query-Optimization.aspx 

http://www.cozumpark.com/blogs/sql/archive/2011/01/15/sql-server-_3101_ndex-olu-turma.aspx

http://www.cozumpark.com/blogs/sql/archive/2010/11/21/sql-server-_3101_ndex-maintenance-_3101_ndex-defragmentation.aspx  

 
Gönderildi : 01/03/2013 02:08

(@ZaferDANYILDIZ)
Gönderiler: 44
Trusted Member
Konu başlatıcı
 

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.

 
Gönderildi : 08/03/2013 13:23

(@ZaferDANYILDIZ)
Gönderiler: 44
Trusted Member
Konu başlatıcı
 

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.

 
Gönderildi : 08/03/2013 13:26

(@ServetAtasoy)
Gönderiler: 57
Trusted Member
 

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' 

 

 

 
Gönderildi : 10/03/2013 02:25

(@ergunyildiz)
Gönderiler: 9
Active Member
 

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

 
Gönderildi : 07/04/2013 03:24

(@idrisAYDIN)
Gönderiler: 4
New Member
 

@DBNAME i declare ettikten sonra set komutuyla tanımlayabilirsiniz ya da başka bir yerden select edebilirsiniz.

 
Gönderildi : 23/04/2013 16:37

(@ergunyildiz)
Gönderiler: 9
Active Member
 

@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ü 

 
Gönderildi : 24/04/2013 00:11

(@ergunyildiz)
Gönderiler: 9
Active Member
 

@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ü 

 
Gönderildi : 24/04/2013 00:12

Paylaş: