Индексы по полю varchar отсутствуют.
При использования
запроса вида:
Код: Выделить всё
select * from table
where UPPER(fio) starting with('ШИ')
если прописать starting with('ШИШКИН') то идет чтение уже всех записей(~80 тыс) при том же натуральном плане, и по времени исполнения это заметно.
если убрать UPPER то в некоторых случаях тоже пойдет перебор не всех записей, в зависимости от их количества(селективности?) в базе.
Где-нибудь есть описание как это и в каких случаях работает?
По умолчанию строится некий невидимый индекс по первым символам поля varchar?