Kategori : TSQL

Sep 28 2011

Full Text Search(Tüm Metinde Arama)

 Full text search, karakter bazlı aramalarda daha verimli sonuçlar elde etmek için kullanılan bir sql servisidir.işleyişi hakkında kısa bir bilgi vermek gerekirse , bu servisi kullanmak için öncelikle full text indexler tanımlanmalıdır.Bu indexler, belirtilen alanın verisini, fiziksel olarak belirtilen alana indexleyerek bu alan içerisinde arama yapılmasını kolaylaştırır.

Neden Full Text search KULLANMALIYIZ ?

-Verilerimizin boyutu büyük olduğu zaman like operatörü ile arama yapmak çok uzun zaman alacak ve performansı düşürecektir.

-like operatörü ile formatlanmış binary verilerde arama yapmak imkansızdır.

-like operatörü ile yapılan aramalarda sonuc büyük ve küçük harflere duyarlıdır.

Sıraladığımız maddeleri göz önünde bulundurduğumuzda yüksek boyutlu verilerin(karakter) tutuldugu tablolarda veya kolonlarda full text search servisini kullanmak daha akıllıca olacaktır.Bugün internette yer alan bir çok arama motorunun da bu özelliği kullandığını unutmamakta fayda var.

NOT:Full text search özelliği uygulanacak tablolarda mutlaka bir uniqe alan olmalıdır.unutulmaması gereken bir diğer nokta ise full text indexler char,varchar,text,ntext,nchar ve nvarchar data türüne sahip kolonlar üzerinde tanımlanabilir.   

1 yorum - Gönderen : Egemen Ateş (2:27 PM) - Kategori : Genel | SQL | TSQL

Sep 27 2011

stored procedure(saklı yordamlar)

Kısaca database yönetim tarafında tutulan derlenmiş sql cümlecikleridir.Çok katmanlı mimarilerde kullanıldığı zaman fayda sağlanması beklenmektedir.

Başlıca avantajlarını sıralayacak olursak;

-Hız

-Performance

-Güvenlik

-İstemci yükünün azaltılması

-Network(ag) trafiğinin azalması

 Yukarda belirttiğimiz avantajları biraz açacak olursak,örneğin sql cümleciklerimizi program kodlar içerisinden gönderdiğimizde ,gönderdiğimiz bu cümleler herdefasında derlenip çalıştırılacağı için performans ve zaman kaybına neden olacaktır.Diger bir şekilde bunları stored procedure olarak kaydettiğimizde program kod kısmından ilgili parametreleri alıp sql cümlesini database in bulunduğu sunucu makinada çalıştıracağı için ,istemci makinada ki iş yükünü azaltıp,performansı arttıracaktır,stored procedureler yalnızca ilk çagrıldıklarında derlenir ve bir işleyiş planı oluşturularak diğer kullanımlarda tekrar derlenmemek için memory e cache edilecektir.Bu işleyiş planı sql server re-start edilmedikçe ve uzun süre az kullanımdan dolayı yaşlanmadıkça(aging) cache edilecektir.Diger bir artısı network ağ trafiginin azaltılmasını sağlamak.sadece Execute stored proc_name ifadesini hat üzerinden  gönderir.Tamamen T-SQL komutları göndermek yerine bu daha performanslı olacaktır.İyi tasarlanmış bir procedure kullanımı client ile server arasındaki round triplerindeki trafiği bir fonksiyon çağırma gibi kullanım şeklinden dolayı azaltır.bir diger faydası  ise bakım yapılabilirliği olması , örneğin yeni oluşturmuş olduğumuz x,y,z tablolarımızı var olan bir store procedüre içerisinden sisteme entegre etmek ,kod içerisinden sisteme entegre etmekten daha kolaydır ve storaged procedurlerin güncellenmesi kod içerisinden güncelleme yapmaktan daha kolaydır,ve projeyi tekrardan derlemek,test etmek veya deploy etmek zorunda kalmayız.

1 yorum - Gönderen : Egemen Ateş (2:02 PM) - Kategori : Coldfusion | Genel | SQL | TSQL

Feb 3 2011

MSSQL TEMPORARY TABLES [GEÇİCİ TABLOLAR]

Sql üzerinde bazen performans gereği bazen ise verileri geçici olarak bir tabloda tutma ihtiyacı hissederiz, bunu MSSQL üzerinde kolayca uygulayabilirsiniz. Unutmayın oluşturduğunuz temp table sadece o anki connection için oluşur ve siz connection'ı kapattıktan sonra sql tarafından otomatik olarak drop edilir. Yani sanal tabloları oluşturduktan sonra birde silmesi ile uğraşanız gerekmez..

Örn:

SELECT * INTO #TestTempTable

FROM UYELER WHERE IL='Istanbul'

Bu sql kodu UYELER tablosundaki ili istanbul olanları testTempTable diye sanal bir tabloya aktarır. Kullanırken de aşağıdaki gibi kullanabilirsiniz.

SELECT

* FROM #TestTempTable

Sizin açtığınız connection açık iken bu tabloyu normal SQL tabloları gibi kullanabilirsiniz.

 

0 yorum - Gönderen : Mahmut Er (3:14 PM) - Kategori : SQL | TSQL

Jan 24 2011

Days in Month for Sql,Ayın içindeki gün sayısını bulan sql cümleciği

Birçok programlama dilinde zaten bu fonksiyon mecvut, ancak SQL'de yapılabiliyor,  case when li yapmak gereksiz koda sebebiyet verebilir, aşağıda 1 satırda bu değerin nasıl alınabildiğini göreceksiniz.

SELECT day(dateadd(mm,datediff(mm,-1,TABLODAKI_TARIH_ALANI),-1)) as dayInMonth FROM TABLO_ADI

eğer karışık geldi ise aşağıdaki kodu direkt çalıştırabilirsiniz.

select day(dateadd(mm,datediff(mm,-1,'2010-02-01'),-1)) daysInMonth

bu tırnak ile yazılan kısıma tablonuzdaki tarih alanının adını yazabilirsiniz sorgularınızda..

 

 

0 yorum - Gönderen : Mahmut Er (12:31 PM) - Kategori : SQL | TSQL

Sep 24 2009

ORACLE ile MSSQL Kod Karşılıkları..

AçıklamaOracleMS SQL Server
Smallest integer >= n CEIL CEILING
Modulus MOD %
Truncate number TRUNC <none>
Max or min number or string in list GREATEST,
LEAST
<none>
Translate NULL to n NVL ISNULL

As of 7.0, also: COALESCE

Return NULL if two values are equal DECODE

As of Oracle 9i, also:
NULLIF

NULLIF

Devamı ...

1 yorum - Gönderen : Mahmut Er (6:06 PM) - Kategori : SQL | TSQL

Sep 2 2009

CASE WHEN SQL Aramalarında Kullanma

Sql Sorgularında Order By'ın yetersiz kaldığı durumlarda ORDER By ile birlikte CASE WHEN kullanarak dönen sorgularımızı istediğimiz şekillerde sıralayabiliriz. Örneğin iki kolonda arama yaptığımızı düşünelim. NAME alanında bulunan eşlemeler önce, DETAIL alanında bulunan eşlemeler sonra gözüksün gibi koşulları CASE WHEN kullanarak yapabiliriz.

SELECT *
FROM DENEME
WHERE
NAME LIKE '%x%'OR
SURNAME LIKE '%x%'OR
DETAIL LIKE '%x%'
ORDER BY
CASE 'x'
       WHEN NAME THEN 1
       WHEN SURNAME THEN 2
       WHEN DETAIL THEN 3
 END

0 yorum - Gönderen : Yunus Özay (1:17 AM) - Kategori : SQL | TSQL

Sep 1 2009

ORDER BY Üzerinde CASE WHEN Kullanımı (MSSQL+TSQL)

Sql sorgularımızda ORDER BY kullanırken yani query sonuçlarımızı istediğimiz kritere göre sıralarken bazen çok özel durumlarla karşılaşabiliyoruz..Tüm sonuçlar alfabetik gelsin ama sadece 1 kayıt en sonda gelsin yada en başta gelsin gibi değişik durumlarla karşılaşabiliyoruz.Bunun için ORDER BY üzerinde CASE WHEN kullanarak istediğimiz şekilde sıralı sorgular almak mümkün.Lafı çok fazla uzatmadan sizinde daha iyi anlamanız açısından örnek uygulamayı resimli olarak ekliyorum.Faydalı olması dileği ile..

Devamı ...

0 yorum - Gönderen : Mahmut Er (3:26 AM) - Kategori : SQL | TSQL