Exista o singura idee si un singur sfat: masoara, nu ghicii. De unde stii ca dimensiunea cheii este problema? Masoara, masoara si iar masoara.
Ia un query din cele de zeci de secunde si ruleaza-l din SSMS. Seteaza SET STATISTICS IO ON si vezi ce logical reads are, pe ce rowset. Sint zeci sau sute? De la mii in sus in mod sigur faci scan nu seek. Poate ca un rowset este scana in intregime? Poate mai multe sint scanate? Paote chiar de mai multe ori? Afiseaza planul actual de executie (nu cel estimat, ala e BS). Planul arata ce operator consuma cel mai mult timp si de unde vin cele mai multe date. Ce operator e?
GUID nu e intradevar o alegere fericita, mai ales daca este tzinut ca varchar(36) (wtf!!!!) si nu ca
uniqueidentifier. Dar daca problema este de query design atunci convertirea in numeric a cheilor va fi doar o operatie extrem de dureroasa si fara nici un rezultat.
Masoara, Masoara, Masora. Apoi taie.
http://rusanu.com