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