В нашем приложении, использующем базу данных H2 (версия 1.4.196), мы выполняем поиск по полю varchar, выполняя поиск «содержит» (column like '%searchterm%
) или «начинается с» (column like 'searchterm%
).
Таблица довольно большая (около 400 000 записей), и поиск оказывается медленным (варьируется от 3 секунд на моем локальном компьютере разработки до 6-12 секунд на машинах наших клиентов).
Я обнаружил, что указанный столбец не был проиндексирован, и добавил индекс. Оказалось, что время поиска не улучшилось, даже когда я явно указывал подсказку индекса в запросе. explain
показал мне, что в обоих случаях индекс не использовался.
Из моего опыта работы с другими системами баз данных (например, MSSQL) я знаю, что по крайней мере для запросов «начинается с» индексы можно использовать для улучшения поисковых операций.
Поскольку я не нашел соответствующей документации для базы данных H2, мой вопрос:
Можно ли использовать индексы в like
запросах во H2?