Co to jest ten tytułowy CONVERT_IMPLICIT ? Czym skutkuje ? Jak wyeliminować ?
O CONVERT_IMPLICIT mówimy wtedy, gdy SQL Server napotka w predykatach (klauzula WHERE lub klauzula JOIN) porównanie dwóch różnych typów danych. Wtedy jedna strona wartości zostanie przekonwertowana na typ danych drugiej strony. Ten proces bardzo obciąża procesor, we/wy i pamięć.
Za każdym razem, gdy funkcja CONVERT_IMPLICIT zostanie uruchomiona przez zapytanie, zwykle zajmuje znacznie więcej zasobów niż w normalnym przypadku. Wykorzystanie procesora, we/wy i pamięci wzrasta. Dodatkowo, jeśli konwersja odbywa się w kolumnie tabeli, wszystkie wartości kolumny zostaną przekonwertowane na nowy typ danych, co spowolni zapytanie proporcjonalnie do rozmiaru tabeli.
Dodatkowo CONVERT_IMPLICIT jest funkcją i za każdym razem, gdy jest używana w kolumnie, również negatywnie wpływa na plan wykonania, nie wybierając optymalnego indeksu dla zapytania.
A jak wyeliminować CONVERT_IMPLICIT?
Najlepiej jest dopasować typy danych kolumn i wartości używanych w zapytaniu, w którym odbywa się porównanie. Zarówno w klauzuli JOIN, jak i WHERE należy się upewnić się, że obie strony porównania mają te same typy danych. To najprostszy i najskuteczniejszy sposób rozwiązania problemu.