快速检查数据库中是否存在一组项目

戴夫·拉格

我有一个外部服务,可以从中获取项目列表,并在本地保持这些项目与用户之间的关系。我为该外部服务提供了一个名称,然后取回了具有该名称的关联项目。我之所以选择本地保留它们,是因为一旦我的应用程序发现了这些外部项目,我想保留自己的属性。这些项目本身是非常静态的对象,但是它们的总数对我来说是未知的,而且我唯一了解新项目的是新用户在外部服务上是否与它们有关联。

当我从外部服务获得它们的列表时,我想先检查它们是否存在于数据库中,然后使用该对象,但是如果不需要,则需要添加它们,以便设置自己的属性并保留与我的用户的关联。

现在我有以下内容(伪代码,因为它被分解成服务层等):

Set<ExternalItem> items = externalService.getItemsForUser(user.name);
for (ExternalItem externalItem : items){
    Item dbItem = sessionFactory.getCurrentSession().get(Item.class,item.id);
    if (dbitem == null){
        //Not in database, create it.
        dbItem = mapToItem(externalItem);
    } 
    user.addItem(dbItem);

}
sessionFactory.getCurrentSession().save(user);//Saves the associated Items also.

对于大约500个外部项目,此操作花费的时间约为16秒。远程操作大约是其中的1秒钟,并且保存也可以忽略不计。我注意到的消耗来自session.get(Item.class,item.id)我正在进行的大量呼叫。

考虑到我从外部服务中获得了Set,是否有比这里更好的方法来检查数据库中的现有Item?

注意:外部项目的ID与我的外部ID一样可靠,并且单个ID始终代表相同的外部项目

汉普森

我绝对会推荐本地查询,如评论中所建议。

但是,鉴于您正在谈论的数字,我不会打扰他们。Postgres应该能够处理IN500个元素子句,而不会出现问题。我用程序生成的查询包含的项目比执行得还好的项目多得多。

这样,您也只有一次往返,假设已建立适当的索引,则实际上应该在不到一秒的时间内完成。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将一组项目(主题)保存到列表中并保存在数据库中

来自分类Dev

如何检查数据库中是否已存在一组行并跳过迁移它们?

来自分类Dev

Neo4j-基于一组ID检查数据库中是否有多个项目的最佳方法是什么

来自分类Dev

如何检查一组数据中的字段之间是否存在重复项?

来自分类Dev

查询以检查一组列中是否存在值

来自分类Dev

标识数据库中的一组条目

来自分类Dev

从数据库表中获取一组集群/一组值-Oracle SQL

来自分类Dev

如何检查项目是否正确保存在Laravel中的数据库中?

来自分类Dev

在Android中使用Room时,如何检查数据库中是否存在某些项目?

来自分类Dev

是否可以利用SQL Server数据库项目来管理具有各种架构差异的一组数据库?

来自分类Dev

划分一组项目XPath

来自分类Dev

检查 Firebase 数据库中是否存在数据

来自分类Dev

如何检查数据库中是否存在多个值?

来自分类Dev

检查数据库中是否存在记录

来自分类Dev

查询以检查Access数据库中是否存在表

来自分类Dev

检查数据库中是否存在ID

来自分类Dev

从数据库查询检查数组中是否存在值

来自分类Dev

MySQL查询以检查数据库中是否存在URL

来自分类Dev

如何检查数据库中是否存在值

来自分类Dev

如何检查Firebase数据库中是否存在密钥?

来自分类Dev

在Matlab中检查是否存在与平面数据库的连接

来自分类Dev

检查数据库中是否存在记录

来自分类Dev

检查数据库中是否存在行

来自分类Dev

如何检查android中是否存在Sqlite数据库?

来自分类Dev

检查Access数据库中的表是否存在

来自分类Dev

检查drupal数据库中是否存在值

来自分类Dev

检查数据库中的条目是否存在-Drupal 7

来自分类Dev

检查我的数据库表中是否存在值

来自分类Dev

如何检查SQLite中是否存在数据库?

Related 相关文章

  1. 1

    如何将一组项目(主题)保存到列表中并保存在数据库中

  2. 2

    如何检查数据库中是否已存在一组行并跳过迁移它们?

  3. 3

    Neo4j-基于一组ID检查数据库中是否有多个项目的最佳方法是什么

  4. 4

    如何检查一组数据中的字段之间是否存在重复项?

  5. 5

    查询以检查一组列中是否存在值

  6. 6

    标识数据库中的一组条目

  7. 7

    从数据库表中获取一组集群/一组值-Oracle SQL

  8. 8

    如何检查项目是否正确保存在Laravel中的数据库中?

  9. 9

    在Android中使用Room时,如何检查数据库中是否存在某些项目?

  10. 10

    是否可以利用SQL Server数据库项目来管理具有各种架构差异的一组数据库?

  11. 11

    划分一组项目XPath

  12. 12

    检查 Firebase 数据库中是否存在数据

  13. 13

    如何检查数据库中是否存在多个值?

  14. 14

    检查数据库中是否存在记录

  15. 15

    查询以检查Access数据库中是否存在表

  16. 16

    检查数据库中是否存在ID

  17. 17

    从数据库查询检查数组中是否存在值

  18. 18

    MySQL查询以检查数据库中是否存在URL

  19. 19

    如何检查数据库中是否存在值

  20. 20

    如何检查Firebase数据库中是否存在密钥?

  21. 21

    在Matlab中检查是否存在与平面数据库的连接

  22. 22

    检查数据库中是否存在记录

  23. 23

    检查数据库中是否存在行

  24. 24

    如何检查android中是否存在Sqlite数据库?

  25. 25

    检查Access数据库中的表是否存在

  26. 26

    检查drupal数据库中是否存在值

  27. 27

    检查数据库中的条目是否存在-Drupal 7

  28. 28

    检查我的数据库表中是否存在值

  29. 29

    如何检查SQLite中是否存在数据库?

热门标签

归档