SQL Server – Veri Türü Dönüşümleri – Performans Karşılaştırması

SQL Server‘da tablo oluşturduğunuzda, değişken  ve  parametre  tanımladığınızda, bu nesnelere ;metin,sayı,tarih,para vb. hangi tür verilerin saklanacağını belirtmemiz gerekiyor. Verilerin saklanacağı formata veri türü diyoruz. SQL Server veya başka bir veritabanı yönetim sisteminde saklayacağımız veri türünün doğru olarak belirlenmesi ve saklanması performans açısından ciddi önem arz etmektedir.

Bazı durumlarda saklanan veriyi kullanırken farklı bir veri türüne dönüştürme ihtiyacımız olabilir. SQL Server’da tür dönüşümü için üç farklı dönüşüm metodunu kullanabiliriz. Bunlar “CAST,CONVERT ve PARSE” metodlarıdır. Neden bir tane tür dönüşüm metodu yerine birden çok tür dönüşüm metodu olduğunu sorgulayabilirsiniz. Bu üç tür dönüşüm metodununda temelde aynı işlemi yapmalarına rağmen her biri farklı amaçlar doğrultusunda  kullanabileceğimiz ek özellikler barındırmaktadır.

Birden çok tür dönüşüm metodu olduğu için iyi bir veritabanı yöneticisi hangi tür dönüşüm metodunu ne zaman kullanması gerektiğini iyi bilmelidir. Temel tür dönüşümlerini ve biribirlerine karşı performans karşılaştırmalarını inceleyerek ihtiyacımız olan en uygun tür dönüşüm metodunu tercih edebileceğiz. Örnekleri gerçekleştirmeden önce üç tür dönüşümlerinin yazım şekline bakalım.

CAST

CAST tür dönüşüm metodu ANSI SQL-92 uyumlu olup bir veri türünü başka bir veri türüne dönüştürmek için kullanılır.  CAST tür dönüşüm metodu ANSI SQL standartında olduğu için ANSI SQL destekli diğer veritabanı yönetim sistemlerinde de “ORACLE, MYSQL, DB2” vb. kullanımı desteklenmektedir. CAST tür dönüşüm metodunun yazım yöntemi aşağıdaki gibidir;

[sql]

CAST ( dönüştürülecek_veri AS dönüştürülecek_veri_türü )

[/sql]

CONVERT

Convert tür dönüşüm metodu ANSI destekli olmayıp bir veri türünü başka bir veri türüne dönüştürmek için kullanılır.  CONVERT tür dönüşüm metodu CAST ile aynı işlevi yapmasına karşın, dönüşüm sırasında farklı stiller vermemize olanak sağlamaktadır. Örneğin; Dönüşüm yaptığınız bir tarih formatının sadece saat bilgisinin alınmasını,tarih formatının dönüşüm sonucu farklı formatlar şeklinde gösterilmesini Convert tür dönüşüm metodu ile sağlayabilirsiniz. Convert tür dönüşüm metodunun yazım yöntemi aşağıdaki gibidir;

[sql]

CONVERT ( dönüştürülecek_Veri_Türü, dönüştürülecek_veri, [ dönüşüm_sonrası_uygulanacak_stil ] )

[/sql]

PARSE

Parse tür dönüşüm metodu temel olarak CAST ve CONVERT tür dönüşüm metodlarının yaptığı işlemi yerine getirmek yani bir veri türünü başka bir veri türüne dönüştürmek için kullanılır. PARSE tür dönüşüm metodu ek olarak tür dönüşüm sonrası gelen yeni türe bir kültür uygulamak için kullanılır. Örneğin; bir sayıyı para birimine dönüştürmek istediğinizde aynı zamanda kültür bilgisi vererek dönüşüm sonrası para biriminin türü “TL,Euro,Dolar vb.” formatlanabilir. Yine bir tarih verisini dönüştürdüğünüz kültüre göre “Almanya,İngiltere,Japonya” vb. tarih ve saat formatlarında görüntüleyebilirsiniz. Parse tür dönüşüm metodunun kullanım şekli aşağıdaki gibidir;

[sql]

PARSE (dönüştürülecek_veri AS dönüştürülecek_Veri_Türü [ USING dönüştürülmek_istenen_kültür ] )

[/sql]

Performans Karşılaştırmaları

Bu üç tür dönüşüm metodunun üzerinden geçmiş olduk sırada temel tür dönüşümünde hangi tür dönüşüm metodu daha performanslı onu inceleyelim. Tür dönüşüm metodlarının performans karşılaştırmalarını incelemek için aşağıdaki sorgu ile yeni bir tablo oluşturuyorum.

[sql]

CREATE TABLE [dbo].[Persons](
[PersonId] [int] IDENTITY(1,1) NOT NULL,
[PersonName] [varchar](50) NULL,
[TCKN] [varchar](11) NULL,
[CreatedDate] [varchar](20) NULL)
ON [PRIMARY]

[/sql]

Boş bir tablo oluşturduktan sonra bu tabloya 100000 kayıt ekliyorum.

[sql]

INSERT INTO Persons (PersonName,TCKN,CreatedDate) VALUES
(‘Mesut Güneş – Mesutx.com’,’123456789′,’2017-10-11 09:25:00′)

GO 100000

[/sql]

Tablomuzu oluşturup, kayıtlarımızı tabloya işledikten sonra VARCHAR veri türündeki bir alanı temel tür dönüşümü kullanarak INT veri türüne dönüştürelim. Dönüşüm sonrası hangi dönüşüm metodunun ne kadar zaman sürdüğünü öğrenmek için sorgularımızın başına aşağıdaki komutu eklemeliyiz.

[sql]

SET STATISTICS TIME ON

[/sql]

Varchar veri türüne sahip 100 bin kayıtlı bir kolonu INT veri türüne dönüştürüyoruz. Temel dönüşüm sonrası gözüken sürelerden de anlaşılacağı üzere CAST ve Convert tür dönüşüm metodları en az zamanı alırken, Parse tür dönüşüm metodu çok fazla zaman alıp diğer tür dönüşüm metodlarına göre 2.5 kat daha fazla zaman harcıyor.

Varchar veri türünü INT veri türüne dönüşüm sonrası performans sonuçlarını yukarıdaki görüntüden öğrenmiş olduk. Peki varchar veri türünü decimal veri türünde dönüştürdüğümüzde sonuçlar nasıl olacak?

Varchar veri türünden Decimal veri türüne dönüşüm sonrası da performans sıralaması değişmedi. Son olarak Varchar veri türündeki bir alanı DateTime veri türüne dönüştürelim.

Üç tür dönüşüm metodunu kullanarak varchar bir veriyi datetime veri türüne dönüştürdüğümüzde aradaki performans farkının ciddi bir şekilde Parse tür düşünüm metodunda arttığını görüyoruz. Performans karşılaştırmalarının sonucunda eğer herhangi bir formatlama veya kültür formatı kullanılmayacaksa kesinlikle CAST veri türü dönüşüm metodunu kullanmamız gerektiğini performans karşılaştırmasında görüyoruz.

Faydalı olması dileğiyle…

Mesut Güneş

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.