Mysql Rails:如何对超过20000条记录的表执行搜索?

Mysql Rails:如何对超过20000条记录的表执行搜索?,mysql,ruby-on-rails,Mysql,Ruby On Rails,我有一个产品模型,关联表包含20000多条记录。在客户端,我使用angular,在其中一个界面中,我为产品提供了自动完成搜索功能,因此搜索产品需要花费大量时间,基本上在sql端,可以转换为以下查询: select * from products where name like = %abc% 这次最好的解决方法是什么?我不知道如何让这个请求更有效率-它看起来很简单,20000条记录不是一个庞大的数据库,但你应该在自动完成组件中寻找良好的用户体验实践。首先,您应该在用户写入少量字符后开始搜索数据

我有一个产品模型,关联表包含20000多条记录。在客户端,我使用angular,在其中一个界面中,我为产品提供了自动完成搜索功能,因此搜索产品需要花费大量时间,基本上在sql端,可以转换为以下查询:

select * from products where name like = %abc%

这次最好的解决方法是什么?

我不知道如何让这个请求更有效率-它看起来很简单,20000条记录不是一个庞大的数据库,但你应该在自动完成组件中寻找良好的用户体验实践。首先,您应该在用户写入少量字符后开始搜索数据库(通常我从3开始),在开始抓取数据之前,您应该从KeyUp中找到合适的时间(比如0.5s或更多)。使用
='abc%'
搜索是否有效,因为这将允许您在名称上放置索引,并将使用它。如果您要使用搜索,我建议将弹性搜索添加到您的应用程序中。它将产生非常快速的结果,并为此而构建。毫无疑问,弹性搜索是这里的解决方案。我已经在rails应用程序中使用angular for autocomplete和elastic search完成了这项工作。如果您需要使用通配符搜索开头和结尾,那么您肯定需要考虑为类似的内容建立全文搜索索引。正如@NigelRen所说的,如果您只搜索通配符结尾,那么就可以有一个索引。