数据库
首页 > 数据库> > mysql – 仅查询前n个结果

mysql – 仅查询前n个结果

作者:互联网

我正在努力实现的是一个巨大的加速(读取:增量结果),当用类似的操作符搜索数据库时,如果其他一切都已经失败,那么它是最后的手段,以便为给定的搜索找到解决方案.

我现在正在做的是我用jooq查询mysql

dsl.select(re.ID).from(re).where(re.EXPLANATION.likeIgnoreCase(“%”包含“%”)).fetch()

这相当于

来自EXPLANATIONS的SELECT ID,其中EXPLANATIONS.EXPLANATION(如“%”)包含“%”

但我真的不需要整个结果(或者好,不是第一步).速度慢的原因是这个数据库表包含大约200万条记录,而EXPLANATION字段是varchar(2000),这使得它查询起来很慢(但是为这个字段定义了一个FULLTEXT INDEX).

我的问题是

>如果可能,如何查询我的查询的前n个结果
>如果有任何可能的INDEX我可以定义在给定的情况下更快地使这样的查询.

解决方法:

我知道您不仅要限制返回结果的数量(可以在查询结束时使用LIMIT完成),而是应用LIKE操作的记录数.

一种想法可能是,不是对EXPLANATIONS表的所有记录应用LIKE操作,而是对表的有限数量的项进行:

SELECT exp.ID FROM(select * from EXPLANATIONS limit 1000) exp WHERE 
exp.EXPLANATION LIKE "%" + contains + "%"

标签:mysql,mysql-5-5
来源: https://codeday.me/bug/20190806/1598356.html