Не могу сказать про Оракл, но в MS SQL использование индекса CustIdx вполне оправдано (ну, конечно, если он получается селективным):
- SalesId не может использоваться так как там неравенство.
- CustAccount есть в CustIdx.
- В общем случае, клиенты распределены в заказах достаточно равномерно.
В MS SQL различие можно было бы списать на статистику (возможно, что в одной из баз статистика устарела и движок некорректно определяет план запроса).
С точки зрения MS SQL смущает использование функции SUBSTR... В MS SQL такое бывает когда текстовые идентификаторы выровнены вправо (например, при переходе с Ax3.0 на следующую версию не была выполнена процедура реорганизации выравнивания). В MS SQL это приводит к очень серьезной деградации производительности, как в Оракле не знаю.