sql - Oracle SQL 快速检索否定条件
问题描述
不确定我是否正确地问了这个问题
我有一张有 2K 条记录的表。每条记录代表一个巨大的批处理单元,它的初始状态为 0(零)。每次批次完成时,该批次记录的状态都会更新=10。这将该行/批次标记为已完成
查看所有记录的状态是否为 10 的最快方法是什么。查询可以返回 true 或 false 或在遇到第一个 0(零)时立即计数。只有在最坏的情况下,它必须遍历整个表并返回。
解决方案
我会做这样的事情:
select null as col
from your_table
where status = 0 AND ROWNUM = 1
;
(或者select
你想要的第一行遇到的任何内容status = 0
;按照我编写查询的方式,它只会告诉你是否有不完整的批次,但不会告诉你其他任何事情。)
ROWNUM
一旦遇到第一个条件,条件就会强制执行停止-status = 0
无论是从表本身,还是从索引status
(如果您在列上有索引)(如果这种查询在您的业务中很常见)。
该查询将返回单行 -NULL
在唯一的列col
中,除非您选择从记录中选择某些内容 - 或者如果所有批次都已完成,则不返回任何行。
推荐阅读
- javascript - 在 Firefox/Safari 中使用 document.body 上的 scrollLeft 进行水平滚动不起作用
- github - GitHub 项目中的泳道
- python - LIST 作为递归函数中的参数的奇怪行为
- android - IllegalStateException:分析失败:java.lang.AssertionError:注释树尚未归属:@kotlin.Metadata
- python - 在列表理解中附加到列表
- makefile - Makefile 忽略现有目录
- typescript - 将 Typescript 项目打包成可执行文件
- apache-spark - 如何在pyspark中获取嵌入的角度javascript文本框值
- java - 如何使用 bluecove 在 Java 中断开 BT 设备?
- c# - 我正在尝试为 iOS 使用消息模板