回答

收藏

优化SELECT COUNT以存在

技术问答 技术问答 250 人阅读 | 0 人回复 | 2023-09-14

我有一个查询,可以从表中查找某些客户。
  e+ \7 q! n- j7 L/ A' jSELECT COUNT(*)
. S' A3 W- a/ x& z( [; K) f  FROM CUSTOMER
/ o/ U# P; l$ z; `6 D# } WHERE amount  02 k: m$ h- U; h; s8 o0 x' w0 C" w
   AND customerid = 223 @' b! {8 A3 g4 T  V
在customerid上有一个索引,因此数据库将扫描customerid = 22的所有行。2 X- X7 |: J7 E$ S3 ]! v
由于通过检查计数是否返回零或大于零来处理结果,我该如何优化查询?即,在第一个客户行的金额 0时,查询返回0,否则,如果所有行均= 0,则返回1。
$ x9 v3 z# `4 R2 s5 f               
- o: {" _- o' @. c解决方案:
5 ~1 L. E- a4 y7 y6 J: f9 |; \               
3 ?8 a% H5 K7 y5 P+ q7 `; w2 O' U8 _& X2 z! U$ w: [  ]5 C
4 f0 j' ?3 q% D* X3 _; i
                select case
; g% r$ |' K" e         when exists (select *
* Z; k3 F/ A6 D0 N* Q% t                      from   customer
4 @6 B0 h7 \) @* X: d                      where  amount  0. |2 ?- x$ [+ y  _0 R- i" x  F
                             and customerid = 22) then 1, F' D! @. s4 V+ ~+ \9 u$ Z
         else 0
5 r8 Q- q7 W$ O6 [" \1 P; v2 Z# F       end  as non_zero_exists
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则