首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails5:在select中获取大量记录的最快方法

Rails5:在select中获取大量记录的最快方法
EN

Stack Overflow用户
提问于 2018-09-26 17:13:31
回答 3查看 881关注 0票数 0

我有一个Rails应用程序,它用cocoon在select上从一个模型加载超过2k个寄存器用于关联。我已经在使用select2 jQuery插件来滚动和搜索主题,但是加载速度非常慢。

代码语言:javascript
运行
AI代码解释
复制
<%= f.select :subject_id, options_for_select(Subject.all.map{ |c| [c.name, c.id, {}] }, f.object.subject_id), {include_blank: 'Select a subject'}, {required: true, class: "select2 "} %>

这个模型从模型中加载了超过2k个寄存器,使得select加载速度很慢,对于用户来说,从模型中更快地加载寄存器的最佳实践是什么?

EN

回答 3

Stack Overflow用户

发布于 2018-09-26 17:36:55

您应该考虑使用诸如Select2之类的javascript插件,它将使您能够搜索与远程ajax调用的关联。您可以在https://select2.org/data-sources/ajax中看到Select2 ajax的实际应用。

然后,你需要在javascript中初始化select2,并确保你的寄存器控制器响应json (你也应该对这些结果进行分页,比如Kaminari gem)。

任何时候,当您添加对可能包含许多记录的关联的引用时,都会希望使用此远程方法来选择记录。

如果您发现有许多关联需要此相同的远程查找行为,则可以使用诸如SimpleForm之类的gem来帮助创建可重用的custom input,以便为您设置此行为。

票数 0
EN

Stack Overflow用户

发布于 2018-09-28 07:21:59

你不应该一次从数据库加载2k条记录,你的数据必须对每个请求进行分页/限制。你会遇到Ruby的性能问题(内存问题),你的JS的性能也会很差。

一种可能的解决方案是将记录从SQL移动到Redis。因为Redis更快。然后从Redis获取数据。

要在Select2中处理大型数据集,请遵循以下plnkr:http://embed.plnkr.co/db8SXs/preview

票数 0
EN

Stack Overflow用户

发布于 2018-09-28 11:18:39

我得到了一个参数为Select2的解决方案。我让它只在输入最后3位数字后才开始搜索。这样,在处理大量数据时,它就不再慢了。

代码语言:javascript
运行
AI代码解释
复制
$(".select2").select2({
          width: '100%',
          placeholder: 'Start ',
          minimumInputLength: 2,
          tags: true
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52522981

复制
相关文章
nacos 持久化 docker 部署
微服务需要部署 nacos, 但是用 docker 进行部署,容器删除之后配置就全部丢失。所以需要配置外部数据库,使得 nacos 数据持久化。
子润先生
2021/06/11
1.3K0
nacos 持久化 docker 部署
微服务需要部署 nacos, 但是用 docker 进行部署,容器删除之后配置就全部丢失。所以需要配置外部数据库,使得 nacos 数据持久化。
用户2323866
2021/06/24
1.3K0
在容器中部署mysql与数据持久化
通过上一节的学习,我们知道了如何部署一个不带数据库的静态nginx页面;但一般的web应用中,还需要部署mysql数据库,本节我们将学习如何使用容器部署mysql数据库。 回顾:【docker实践连载1】使用docker输出hello world 01 mysql独立部署 我们可以将mysql与web应用部署在同一个容器内,但更一般的用法是将mysql独立部署一个容器。 #获取mysql5.6.36官方镜像 (mysql5.7变动较大,推荐使用5.6) docker pull mysql:5.6.36
企鹅号小编
2018/01/23
2K0
在容器中部署mysql与数据持久化
数据持久化
数据持久化是将内存中的数据转换为存储模型,以及存储模型转换为内存中的数据模型的统称。数据模型可以是任何数据结构或对象模型。存储模型可以使关系模型、XML、二进制流等。cmp和Hibernate只是对象模型到关系模型之间转换的不同实现。
全栈程序员站长
2022/06/30
3610
Redis数据持久化
随着AOF不断地记录写操作日志,因为所有的操作都会记录,所以必定会出现一些无用的日志。大量无用的日志会让AOF文件过大,也会让数据恢复的时间过长。不过Redis提供了AOF rewrite功能,可以重写AOF文件,只保留能够把数据恢复到最新状态的最小写操作集。
Autooooooo
2020/11/09
7110
Redis数据持久化
Redis数据持久化
可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
DB之路
2021/03/07
7260
Redis 数据持久化
Redis支持两种数据持久化方式:RDB方式和AOF方式。前者会根据配置的规则定时将内存中的数据持久化到硬盘上,后者则是在每次执行写命令之后将命令记录下来。两种持久化方式可以单独使用,但是通常会将两者结合使用。
星哥玩云
2022/09/15
1.5K0
Redis 数据持久化
nacos数据持久化
持久化:管理的配置信息持久化。 注意:默认nacos存在配置信息持久化,默认的持久化方式为内嵌数据库derby(无法友好的展示数据)。
别团等shy哥发育
2023/02/25
9260
nacos数据持久化
redis 数据持久化
Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。 RDB持久化 RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。 手动触发数据持久化
小手冰凉
2020/07/27
5560
iOS数据持久化
// // AppDelegate.m // // import "AppDelegate.h" import "Person.h" @interface AppDelegate () @end @implementation AppDelegate (void)dealloc { [_window release]; [super dealloc]; } (BOOL)application:(UIApplication )application didFinishLaunchingWith
大师级码师
2021/10/29
5310
Nacos的持久化和集群部署
  mysql/mysql-server:5.7   nacos/nacos-server:1.1.4
用户10196776
2023/10/17
4240
Nacos的持久化和集群部署
docker容器数据持久化
"Failure is success if you learn from it.—— 作者未知"
小闫同学啊
2020/03/11
4.3K0
Redis的数据持久化
根据服务器是否启用了 AOF 持久化功能, 服务器载入数据时所使用的目标文件会有所不同:
真正的飞鱼
2022/12/20
4060
Docker 数据持久化Volume
Docker镜像是基于联合文件系统(Union File System)的一种层式结构,由一系列指令一步一步构建出来。
TestOps
2022/04/07
6900
Docker 数据持久化Volume
Kubernetes数据持久化方案
在开始介绍k8s持久化存储前,我们有必要了解一下k8s的emptydir和hostpath、configmap以及secret的机制和用途。
星哥玩云
2022/07/13
8310
Kubernetes数据持久化方案
持久化内存数据访问
持久化内存访问链路 访问链路说明 第一种,应用端发起read/write操作,会进入内核的vfs的相关函数,如果数据在page cache中,直接访问page cache.如果不在则从磁盘中读取。通常内核会通过磁盘文件系统确定文件所在文件系统块的大小,根据你文件系统块大小计算出请求数据的长度,通过磁盘文件系统的函数来访问inode,然后根据inode来确定数据所在磁盘的位置。内核将所有请求转发到通用块设备,通过IO调度将IO进行重排和合并,最终通过块设备驱动层向持久化内存硬件发送IO指令进行实际的IO
用户4700054
2022/08/17
6490
持久化内存数据访问
Redis的数据持久化
主从同步数据选择的方式-----数据持久化操作  Redis在正常关闭时触发rdb操作
星哥玩云
2022/08/18
3580
Redis初识~持久化数据
Redis我们都知道Redis的内容是放在内存当中的,如果我们的安装Redis的服务器宕机了,那么我们在内存保存的内容也就丢失了。在Redis当中给提供了不同级别的持久化的方式来进行数据的保存: RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储。 AOF持久化方式记录每次对服务器写的操作。当服务器重启的时候会重启执行这些命令来恢复原始的数据,AOF命令以redis协议追加每次写的操作到文件的末尾,Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。 也可以不运行持久化的方式。
用户2196435
2018/07/19
6210
Flutter开发 - 数据持久化
数据持久化的应用场景有很多。比如,用户的账号登录信息需要保存,用于每次与 Web 服务验证身份;又比如,下载后的图片需要缓存,避免每次都要重新加载,浪费用户流量。
用户1483438
2022/03/28
1.7K0
详解 ZooKeeper 数据持久化
Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源、有趣、入门级的 ZooKeeper 教程,面向有编程基础的新手。
HelloGitHub
2021/05/14
1.1K0
详解 ZooKeeper 数据持久化

相似问题

couchbase是否持久化数据?

11

通过NSUserDefaults实现数据持久化

22

如何在可靠部署后持久化数据

12

将更改持久化到自动生成的DbContext

10

通过AppPool回收持久化静态数据

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档