Вы говорите, что tblA.number является типом данных char?
Я думаю, что имеет смысл, что использование cint () будет быстрее, поскольку вы преобразуете строку в число, а затем проводите сравнение чисел со столбцом tblB.B.
Я не могу представить, чтобы кого-то удивило, что сравнение строк (которое происходит символ за символом) приведет к чему-то близкому к сравнению двух чисел.
В первом примере, поскольку типы данных не совпадают, первый tblA.number является строкой, и поэтому он, вероятно, преобразует столбец tblB.B в строку для этого сравнения.
Таким образом, преобразование числа в строку, вероятно, происходит медленнее (требуется больше памяти для пространства строк, а затем возникает проблема сбора мусора, когда вы выбрасываете строку). Так что не только создание строки будет стоить времени, но и хуже, сравнение строк будет медленнее.
С помощью cint () вы конвертируете (приводите) строку в число (возможно, быстрее, чем в строку), а затем выполняете сравнение чисел (которое, безусловно, быстрее, чем сравнение строк).
Так что я не могу с уверенностью сказать, что вышеизложенное является причиной, но это, конечно, не будет сюрпризом. Как уже было отмечено, использование ShowPlan может привести к дополнительной информации.