Я полагаю, что дело не в конкретной разнице между двумя типами данных, а в том, что SQL Server необходимо неявно преобразовать их, чтобы они соответствовали операции соединения.
Я не знаю, почему будет разница с вашим первым запросом и вторым, где вы явно конвертируете, но я понимаю, почему может возникнуть проблема, когда вы конвертируете в тип данных, который не соответствует, а затем SQL Server все равно должен их неявно конвертировать (как в третьем случае). Возможно, в первом случае SQL Server неявно преобразует оба значения в десятичное (24,4), чтобы не потерять данные, и эта операция занимает больше времени, чем преобразование другим способом. Вы пытались явно преобразовать числовое (18,2) в десятичное (24,4)?