情况:
我正在尝试使用“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
开头的行。 .
关于sql - 改进 Firebird 数据库上的 '% LIKE %' 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9007269/