栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

大于或等于ALL()且等于MAX()速度

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

大于或等于ALL()且等于MAX()速度

如果有任何行,第一个查询将失败

quantity ISNULL
(如Gordon所示)。
仅当所有行都具有时,第二个查询才会失败
quantity IS NULL
。因此,它在大多数情况下应该是可用的。(而且速度更快。)

如果在 Postgres 12或更早版本中 需要NULL安全查询,即NULL是有效结果,请考虑:

SELECt id, quantityFROM   productWHERe  quantity IS NOT DISTINCT FROM (SELECt MAX(quantity) FROM product);

或者,可能更快:

SELECt id, quantityFROM  (   SELECt *, rank() OVER (ORDER BY quantity DESC NULLS LAST) AS rnk   FROM   product   ) subWHERe  rnk = 1;

看:

  • 与TOP n WITH TIES等效的PostgreSQL:是否限制“ with ties”?

Postgres 13 添加了标准的SQL子句

WITHTIES

SELECt idFROM   productORDER  BY quantity DESC NULLS LASTFETCH  FIRST 1 ROWS WITH TIES;

db
<>在这里拨弄

可使用任何数量的

NULL
值。

手册:

SQL:2008引入了不同的语法来实现相同的结果,PostgreSQL也支持该语法。它是:

OFFSET start { ROW | ROWS }FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { onLY | WITH TIES }

在这种语法中,标准要求 _

start
or _
count

值是文字常量,参数或变量名;作为PostgreSQL扩展,允许使用其他表达式,但通常需要将其括在括号中以避免歧义。如果 _
count
_
FETCH
子句中省略if ,则默认为1。此
WITH TIES
选项用于根据该
ORDERBY
子句返回与结果集中最后一行相关的所有其他行;否则,默认为1 。
ORDERBY
在这种情况下是强制性的。
ROW
ROWS
以及
FIRST
NEXT
是不影响这些条款的影响干扰词。

值得注意的是,

WITH TIES
不能与(non-standard)short语法一起使用
LIMIT n

这是 最快的解决方案 。比您当前的任何一个查询都要快。对于 性能而言 更重要:在上有一个
索引

(quantity)
。或更专业的覆盖索引允许仅索引扫描(速度稍快一点):

CREATE INDEX ON product (quantity DESC NULLS LAST) INCLUDE (id);

看:

  • PostgreSQL中的覆盖索引对JOIN列有帮助吗?

我们需要

NULLS LAST
使
NULL
值最后以降序排列。看:

  • 按ASC列排序,但先使用NULL值?


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377349.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号