- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用出色的 Sequel ORM,在某些时候我生成了一个 ID 数组,我正在尝试检索具有这些 ID 的用户。例如
user_ids = [1, 2, 3]
User.where(id: user_ids).all
# (0.004223s) SELECT * FROM "users" WHERE ("id" IN (1, 2, 3))
但有时,用户列表是空的,我有效得到的是:
User.where(id: []).all
# (0.421287s) SELECT * FROM "users" WHERE ("id" != "id")
结果是正确的(即没有返回行),但查询速度慢了两个数量级。
在具有数百万行的表上,可能需要几秒钟才能返回。
我很好奇为什么首先会生成这个查询,但我也很好奇为什么 Postgres 查询规划器似乎没有检测到这种矛盾并立即返回一个空数据集。
是否有一个巧妙的解决方案,或者我是否必须检查所有数组是否为空?
我正在使用 Ruby 2.0.0、Sequel 4.24.0 和 Postgres 9.3.6。
最佳答案
有一个closed issue on github关于这种行为。
我同意 jeremyevans 的观点,不需要修复,因为很明显结果将而且应该始终为空。此外,您会认为 PostgreSQL 应该足够聪明来优化这样的查询,而不应该进行整个表扫描。
因此恕我直言,在代码中修复此行为以避免完全调用数据库更有意义:
user_ids.present? ? User.where(id: user_ids) : []
关于sql - Postgres 和 Ruby 的续集 : Empty array in where-clause getting converted to slow query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33991876/
所以我有这个表格..有 2 个字段。 “Youtube”和“link”我想做如果你已经填了YouTube,应该这样做: if(!empty($youtube)) { if ($pos === fal
我有一个要验证的输入: 这是 JS: jQuery("#input").live('change', function() { if("#input:not(
假设我在 someNode 中注册了一些带有 id 的小部件(比如 id1、id2)。现在,如果我这样做,domConstruct.empty(someNode),这将通过执行 someNode.in
我需要确定 IQueryable 方法是返回数据,还是像这样将其应用于 RadGrid 的数据源时返回“空”: RadGrid.DataSource = Method(x); if (
我有以下不能正常工作的 $_GET['category'] 也可以等于 0。 if ( empty( $_GET['category'] ) ){ // do something } else
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
这个问题在这里已经有了答案: In C#, should I use string.Empty or String.Empty or "" to intitialize a string? (31
使用下面的内容,我检查每个输入字段是否为空 if ( $("input:empty").length > 0 ) { $(":text[value=]").css('background'
这是有原因的吗?我问是因为如果您需要使用大量空字符,那么您会遇到与使用大量空字符串时相同的情况。 编辑:这种用法的原因是: myString.Replace ('c', '') 因此从 myStrin
我对 Apache POI 有一个大问题。 A B C D 1 text text text text 2
在阅读 MarkLogic 时 Query Performance and Tuning Guide ,我了解了 empty greatest 和 empty least 以及如何将其与 order
我正在使用.NET 3.5。我正在创建一个简单的类,并希望确保处理后的类不应该为 null 或者也不应该是新的.. 所以如果我们可以像这样测试它 Dim objClass as new Class()
我有这个 HTML 页面 foo pre:empty { display: none; } some text here in the pre element 而且我想知道为
我知道我能做到 unless [1].empty? 但是我想知道有没有办法呢? 最佳答案 以及 davidrac 提到的 #any?,以及 ActiveSupport有 #present?这更像是其他
在调试某些东西时,我看到了 STL vector::empty() 实现: bool empty() const {return (size() == 0); } 我相信,每当我们探测
我有一个 NavigationDrawer 来启动 fragment 。我有一个来自 TabPageIndicator 的包含 4 个选项卡的 fragment ,其中 fragment 包含 Lis
我正在使用 Jackson XML 2.8.9,不幸的是我找不到任何方法将空/空集合序列化为空节点。 负责序列化为 XML 的方法: protected byte[] toXml(final Coll
嗨,所有 SO 用户我对 null 和 Empty 的理解有点困惑。我知道 null 是特例,它不等于自身。我想知道如何确定它是空的,你告诉它是空的依据是什么,空也一样 它是基于内存分配还是什么? 如
这个问题在这里已经有了答案: What is the difference between String and string in C#? (66 个答案) 关闭 10 年前。 C# 中的 str
如果要创建一个空的T类型的IEnumerable,可以使用静态泛型方法创建 Enumerable.Empty() 参见 here了解更多信息。 为什么 Microsoft 选择此选项而不是对泛型类型使
我是一名优秀的程序员,十分优秀!