Büyük boyutlu varchar kolonların join’lerde performansının geliştirilmesi

Geçenlerde sql server sorgularımın performansını geliştirmek için yaptığım araştırmalarda bulduğum bir trick :

Veri tabanımda bulunan bir tabloda bazı verileri içeren pageData adında nvarchar(3000) tipinde bir kolonum var. Başka bir veri tabanındaki benzer tablo ile pageData kolonunu periyodik olarak join’leyerek bazı işlemler gerçekleştiriyorum. Ancak pageData kolonumun veri tipi nvarchar(3000) olduğu için index tanımlayamıyorum bu yüzden sorgum aşırı derecede yavaş çalışıyor.

Index tanımlama için boyut sınıfı


Böyle bir soruna olası çözüm ise string verinin Md5 hash değerini üretecek genişletilmiş bir fonksiyon yada store procedure yapmak olacaktır. Tabiki böyle bir sorunla daha önce karşılaşanların yaptığı çözümlerdende yararlanmak gerekir :

MD5 Hash SQL Server Extended Stored Procedure
MD5 Hash in SQL Server 2000 and 2005, 32 bit and 64 bit
Create md5 Hash-code using Assemblies in SQL Server 2005

Yukarıdaki örneklerden de yararlanarak pageData kolonu için bir md5 hash değeri üretip join’lerde kullanabiliriz çünkü hash değerimiz char(32) tipinde olacak ve bu veriyi içeren kolona index tanımlaması yapılacağından yeni sorgumuz öncekine göre çok daha hızlı çalışacaktır.

Kaynak ;

Improving performances in sql server when join large varchar columns

Bir cevap yazın