改进Firebird数据库的'%LIKE%'查询

Mar*_*ins 4 sql firebird

情况:

我正在尝试使用"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 }
Run Code Online (Sandbox Code Playgroud)

索引: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%'
Run Code Online (Sandbox Code Playgroud)

问题:

此查询将在超大型数据库上运行.有什么方法可以改善它吗?我正在使用Firebird数据库.

提前致谢.

Ken*_*ite 8

不,不幸的是,因为你%LIKE关键字的两边都使用了通配符().前导(开始)通配符意味着不能使用任何索引来帮助提高搜索速度,因此必须检查每一行以查看它是否符合条件.

你可以改变一下LIKE 'VALUE%'来加快速度; 索引至少可以用于将搜索的行限制为以VALUE.开头的行.