相关疑难解决方法(0)

使用group by vs distinct时的巨大性能差异

我正在HSQLDB服务器上执行一些测试,其中包含一个包含500 000个条目的表.该表没有索引.有5000个不同的业务键.我需要一份清单.当然,我开始DISTINCT查询:

SELECT DISTINCT business_key FROM memory WHERE
   concept <> 'case' or 
   attrib <> 'status' or 
   value <> 'closed'
Run Code Online (Sandbox Code Playgroud)

大约需要90秒!

然后我尝试使用GROUP BY:

SELECT business_key FROM memory WHERE
       concept <> 'case' or 
       attrib <> 'status' or 
       value <> 'closed'
GROUP BY business_key
Run Code Online (Sandbox Code Playgroud)

它需要1秒!!!

试图找出我运行的差异,EXLAIN PLAN FOR但它似乎为两个查询提供相同的信息.

EXLAIN PLAN FOR DISTINCT ...

isAggregated=[false]
columns=[
  COLUMN: PUBLIC.MEMORY.BUSINESS_KEY
]
[range variable 1
  join type=INNER
  table=MEMORY
  alias=M
  access=FULL SCAN
  condition = [    index=SYS_IDX_SYS_PK_10057_10058
    other condition=[
    OR arg_left=[ …
Run Code Online (Sandbox Code Playgroud)

sql performance group-by distinct hsqldb

71
推荐指数
1
解决办法
10万
查看次数

标签 统计

distinct ×1

group-by ×1

hsqldb ×1

performance ×1

sql ×1