当前位置: 首页 > 知识库问答 >
问题:

在同一查询中没有任何和ORDER BY时性能低下

田德运
2023-03-14

在同一个查询中运行既包含NOT'some string'=ANY(array\u column)语句,又包含ORDER BY语句的查询时,性能似乎受到了奇怪的影响。

下面是一个简化的表结构,说明了tagger是UUID数组(v4)的行为:

CREATE TABLE IF NOT EXISTS "doc"."test" (
   "id" STRING,
   "last_active" TIMESTAMP,
   "taggers" ARRAY(STRING)
)

taggers数组可能会变大,可能有数百个,有时甚至数千个单独的字符串。

以下查询都非常有效,可在.03秒内解决:

SELECT id FROM test ORDER BY last_active DESC LIMIT 10;


SELECT id FROM test WHERE NOT ('da10187a-408d-4dfc-ae46-857fd23a574a' = ANY(taggers)) LIMIT 10;


SELECT id FROM test WHERE ('da10187a-408d-4dfc-ae46-857fd23a574a' = ANY(taggers)) ORDER BY last_active DESC LIMIT 10;

但是,在查询中包含这两个部分会跳到2-3秒左右:

 SELECT id FROM test WHERE NOT ('da10187a-408d-4dfc-ae46-857fd23a574a' = ANY(taggers)) ORDER BY last_active LIMIT 10;

非常奇怪的是,在之前运行速度快的查询列表中,最后一个几乎与慢的查询完全相同,只是没有否定。否定ANY也非常快。只有当极限组合中的任何否定被添加时,事情才会变慢。任何帮助将不胜感激。

共有1个答案

贲功
2023-03-14

只有ORDER BY的查询不应用任何过滤,当然速度要快得多。

该查询只有筛选不...不带ORDER BY的ANY()仅将筛选器应用于短数量的记录,直到达到LIMIT数(在本例中为10)。

最后一个查询(使用NOT进行筛选)

 类似资料:
  • 1)使用的第一个查询...大约用了23秒 目前我修改了查询..这需要大约9秒 我不确定要做的表演是什么?我希望这个查询是快速的..我尝试索引rid和id,但这仍然使查询变得更糟。 下面是表格的详细信息 mza_movie_upload MZA_Movie_Statics

  • 我正在使用一个嵌入式数据源(ApacheCommonsDBCP1.3),JDBC3DB2JCC,进行Spring批处理。用于BD2数据库和JDK1的jar。5.我知道DBCP2。x已经发布,但由于现有系统(JDK1.5),我现在无法升级。 数据库配置: 我注意到,如果将validationQuery属性与testOnBorrow、testOnReturn和testWhileIdle一起使用,则完成

  • 我在Firestore中收集了一组文档,其中有一个字段是字符串数组,这些是添加到数据中的标记。 用户可以通过在前端选择和取消选择这些标签来过滤数据,所以我正在做一个数组来查询Firestore。 然后,我在最佳匹配上对结果进行评分,因此匹配更多标签的文档被排序到顶部,并显示到页面顶部供用户使用。 我现在正试图用带有文档快照的startAfter作为光标和限制,对这些数据进行分页。但我需要确保,当限

  • 我有3个元字段:日期(日期格式字符串)、位置和顾问。 设置meta_键时,我可以按日期字段拉入POST和orderby: 然而,我无法用更复杂的meta_query来实现这一点: 基本上,我想拉所有的职位,有一个元开始_日期大于今天的日期和顺序由这些日期。 作为一个旁注-你能在说位置键和仍然按日期键进行元查询搜索吗? 任何帮助都很感激...这是我第一次尝试用meta订购,并且找到了一些好的帖子,但

  • 问题内容: 请任何人告诉我Hive SQL和查询之间的区别 问题答案: Hive支持SORT BY,可对每个reducer的数据进行排序。“ order by”和“ sort by”之间的区别在于,前者保证输出中的总顺序,而后者仅保证精简器中行的排序。如果存在多个减速器,则“排序依据”可能会给出部分排序的最终结果。 注意:关于单个列的单独SORT BY与CLUSTER BY之间的区别可能会造成混淆

  • 由于TypeScript是强类型的,因此简单地使用来检查和听起来是不对的。 TypeScript是否有任何专门的函数或语法糖对此?