当前位置: 首页 > 面试题库 >

Realm数据库中搜索操作的速度

归誉
2023-03-14
问题内容

这是我RealmObject班的模型:

    public class ARDatabase extends RealmObject
    {
    @PrimaryKey
    private String uid;

    private String namex;
    private String desc;
    private boolean isVideo;
    private boolean isDeleted;
    private String urlImg;
    private String urlApp;
    private int updates;
    private boolean isDownloaded;
    private String location;

    public ARDatabase(){}

    public String getUid()
    {
        return uid;
    }

    public void setUid(String uid)
    {
        this.uid = uid;
    }

    public String getNamex()
    {
        return namex;
    }

    public void setNamex(String namex)
    {
        this.namex = namex;
    }

    public String getDesc()
    {
        return desc;
    }

    public void setDesc(String desc)
    {
        this.desc = desc;
    }

    public boolean getIsVideo()
    {
        return isVideo;
    }

    public void setIsVideo(boolean isVideo)
    {
        this.isVideo = isVideo;
    }

    public boolean getIsDeleted()
    {
        return isDeleted;
    }

    public void setIsDeleted(boolean isDeleted)
    {
        this.isDeleted = isDeleted;
    }

    public String getUrlImg()
    {
        return urlImg;
    }

    public void setUrlImg(String urlImg)
    {
        this.urlImg = urlImg;
    }

    public String getUrlApp()
    {
        return urlApp;
    }

    public void setUrlApp(String urlApp)
    {
        this.urlApp = urlApp;
    }

    public int getUpdates()
    {
        return updates;
    }

    public void setUpdates(int updates)
    {
        this.updates = updates;
    }

    public boolean getIsDownloaded()
    {
        return isDownloaded;
    }

    public void setIsDownloaded(boolean isDownloaded)
    {
        this.isDownloaded = isDownloaded;
    }

    public String getLocation()
    {
        return location;
    }

    public void setLocation(String location)
    {
        this.location = location;
    }
}

这就是我uid从默认领域中搜索的方式:

final ARDatabase db = mRealm.where(ARDatabase.class).equalTo("uid",imageTitles.get(result)).findFirst();

现在, 问题 是:考虑到我的领域中有10-100个对象,搜索的速度有多快?

该用例用于图像识别应用程序。当应用识别出图像时,它将返回uid,并且基于uidI,我需要在屏幕上提供与uidASAP 相关联的信息的叠加层。

现在,由于我有大约10-100个对象,因此线性搜索O(n)或通用二进制搜索O(log n)会比Realm我上面使用的搜索更快吗?还是可以调整Realm以获得更快的结果?(以防它现在无法以最快的方式执行)。


问题答案:

在Realm中进行搜索始终会更快,因为您可以在C 内核中执行整个搜索。自己进行搜索将意味着您在Java和C 之间来回往返会产生开销。

快速搜索单个元素的唯一要求是您@Index在字段上具有注释,但是在您的情况下,您已经具有@PrimaryKey自动应用@Index注释的注释。

因此,您的查询将尽可能快。此外,对于10-100个对象,无论您做什么,它都可能对用户即时显示。



 类似资料:
  • 本文向大家介绍在MySQL数据库中快速搜索字符串?,包括了在MySQL数据库中快速搜索字符串?的使用技巧和注意事项,需要的朋友参考一下 使用FULLTEXT搜索来快速搜索字符串。让我们首先创建一个表- 这是创建全文本搜索的查询- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是在MySQL数据库中快速搜索字符串的查询。在这里,我们正在搜索字符串

  • 呃……这个项目如果没有什么特别之处就不叫 elasticsearch 了!现在一起来聊聊客户端的搜索操作。 在命名方案规范的前提下,客户端拥有一切的查询权限,也拥有获取 REST API 公开的一切参数的权限。现在来看看一些示例,方便你熟悉这些语法规则。 Match查询 以下是 Match 查询的标准 curl 格式: curl -XGET 'localhost:9200/my_index/my_

  • 问题内容: 我在输入时搜索用户。但是最后它返回了每个用户。我不知道为什么会这样。好像还好 问题答案: 您正在使用。从文档中: 由返回的实例 将响应节点上具有大于startValue或等于startValue且键大于或等于childKey的值的事件。 因此请记住,如果您搜索某个用户的,则会为所有名称按字母顺序大于给定名称的用户提供。您需要设置a 以限制查询范围。 Firebase旧版文档是了解Fir

  • 问题内容: 我是使用Redis DB的新手。在阅读了一些文档并浏览了Internet上的一些示例并扫描了stackoverflow.com之后,我可以看到Redis速度非常快,可扩展性很好,但这要付出代价,我们必须考虑一下数据的处理方式在设计时访问它们,以及它们将要执行的操作。我能理解这一点,但对于使用普通的旧SQL这么简单却又缓慢地在数据中搜索感到有些困惑。我可以用KEY命令以一种方式完成此操作

  • 本文向大家介绍Java中的数据库操作,包括了Java中的数据库操作的使用技巧和注意事项,需要的朋友参考一下 本文提供了有关如何创建简单JDBC应用程序的示例。这将向您展示如何打开数据库连接,执行SQL查询以及显示结果。 创建JDBC应用程序 构建JDBC应用程序涉及以下六个步骤- 导入软件包:要求您包含包含数据库编程所需的JDBC类的软件包。通常,使用import java.sql。*就足够了。

  • 我的问题-我有mongodb安装在ubuntu服务器上,它有多个数据库,我想连接到mongodb安装在服务器上,获得所有的数据库(数据库的名称,每个数据库的集合),并在所有数据库上执行搜索操作。注意-我不知道数据库的名称