Ситуация:Улучшение «% LIKE%» Запрос на Firebird Database
Я пытаюсь написать эффективный запрос с помощью «LIKE» заявление смотреть после того, как кусок текста в колонку с короткими текстами.
Модель:
Table 'EVENTSGENERAL' : { ID (KEY), GENERATOR_ (FK), DATETIME, COMPUTERNAME, OSLOGIN, DBLOGIN, INFOTYPE, INFO }
Table 'EVENTSGENERATORS' : { ID (KEY), GENERATOR_ (FK), SHORTNAME, LONGNAME }
Table 'EVENTSINFOTYPES' : { ID (KEY), GENERATOR_ (FK), VERSION_, INFOTYPE, DESCRIPTION }
Индексы: EVENTSGENERAL.GENERATOR
, EVENTSGENERAL.DATETIME
, EVENTSINFOTYPES.INFOTYPE
Все по возрастанию.
Мои запросы:
SELECT FIRST @first SKIP @skip A.ID,B.LONGNAME, A.DATETIME, A.COMPUTERNAME,A.OSLOGIN, A.DBLOGIN, C.DESCRIPTION, A.INFO
FROM EVENTSGENERAL A JOIN EVENTSGENERATORS B ON B.GENERATOR_ = A.GENERATOR_
JOIN EVENTSINFOTYPES C ON C.GENERATOR_ = A.GENERATOR_ AND C.INFOTYPE = A.INFOTYPE
WHERE C.DESCRIPTION LIKE '%VALUE%'
Проблема:
Этот запрос будет работать на очень больших баз данных. Есть ли способ улучшить его? Я использую базу данных Firebird.
Заранее спасибо.
Что изменится, если я использую «LIKE%» вместо этого? Было бы быстрее? –
Если вы имеете в виду LIKE 'VALUE%', вы должны иметь возможность индексировать VALUE для некоторой прибыли от производительности. Вы можете попробовать создать индекс, а затем выполнить эквивалент Filebird «плана объяснения». –
Отредактировано для включения эффекта 'LIKE 'VALUE%'' на скорость запроса. –