首页 > 其他分享 >LightDB rownum使用示例及性能测试

LightDB rownum使用示例及性能测试

时间:2024-09-29 15:47:48浏览次数:7  
标签:rows actual LightDB .. 示例 cost loops rownum id

如下所示:

lightdb@oradb=# explain analyze select * from (select a.*,rownum rn from (select * from v,v1 where v.id=v1.id and not exists (select 1 from t where id<>v.id) and v1.id <> '31' order by v1.id) a where rownum<100000+1000) where rn>100000;                                                                       QUERY PLAN                                                                       
--------------------------------------------------------------------------------------------------------------------------------------------------------
 Subquery Scan on lt_tmp_alias_0x1842908  (cost=36160.35..36160.38 rows=1 width=16) (actual time=897.915..897.925 rows=0 loops=1)
   Filter: (lt_tmp_alias_0x1842908.rn > 100000)
   ->  Count StopKey  (cost=36160.35..36160.37 rows=1 width=16) (actual time=897.912..897.920 rows=0 loops=1)
         ->  Subquery Scan on a  (cost=36160.35..36160.37 rows=1 width=16) (actual time=897.910..897.918 rows=0 loops=1)
               ->  Sort  (cost=36160.35..36160.36 rows=1 width=8) (actual time=897.909..897.917 rows=0 loops=1)
                     Sort Key: t_1.id
                     Sort Method: quicksort  Memory: 33kB
                     ->  Hash Join  (cost=27209.80..36160.34 rows=1 width=8) (actual time=897.892..897.899 rows=0 loops=1)
                           Hash Cond: (t_2.id = t_1.id)
                           ->  Seq Scan on t t_2  (cost=0.00..7763.40 rows=316569 width=4) (actual time=0.046..0.047 rows=1 loops=1)
                                 Filter: ((id)::numeric <> '31'::numeric)
                           ->  Hash  (cost=27209.79..27209.79 rows=1 width=4) (actual time=897.823..897.828 rows=0 loops=1)
                                 Buckets: 1024  Batches: 1  Memory Usage: 8kB
                                 ->  Nested Loop Anti Join  (cost=0.00..27209.79 rows=1 width=4) (actual time=897.821..897.823 rows=0 loops=1)
                                       Join Filter: (t.id <> t_1.id)
                                       Rows Removed by Join Filter: 64
                                       ->  Seq Scan on t t_1  (cost=0.00..6172.60 rows=318160 width=4) (actual time=0.016..124.377 rows=320064 loops=1)
                                       ->  Materialize  (cost=0.00..9006.40 rows=318160 width=4) (actual time=0.000..0.000 rows=1 loops=320064)
                                             ->  Seq Scan on t  (cost=0.00..6172.60 rows=318160 width=4) (actual time=0.016..0.017 rows=2 loops=1)
 Planning Time: 2.249 ms
 Execution Time: 898.344 ms
(21 rows)

再看原生limit offset的执行计划:

lightdb@oradb=# explain analyze select * from v,v1 where v.id=v1.id and not exists (select 1 from t where id<>v.id) and v1.id <> '31' order by v1.id limit 1000 offset 100000;
                                                                 QUERY PLAN                                                                 
--------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=36160.36..36160.36 rows=1 width=8) (actual time=967.018..967.027 rows=0 loops=1)
   ->  Sort  (cost=36160.35..36160.36 rows=1 width=8) (actual time=966.998..967.006 rows=0 loops=1)
         Sort Key: t_1.id
         Sort Method: quicksort  Memory: 33kB
         ->  Hash Join  (cost=27209.80..36160.34 rows=1 width=8) (actual time=966.978..966.986 rows=0 loops=1)
               Hash Cond: (t_2.id = t_1.id)
               ->  Seq Scan on t t_2  (cost=0.00..7763.40 rows=316569 width=4) (actual time=0.049..0.050 rows=1 loops=1)
                     Filter: ((id)::numeric <> '31'::numeric)
               ->  Hash  (cost=27209.79..27209.79 rows=1 width=4) (actual time=966.881..966.886 rows=0 loops=1)
                     Buckets: 1024  Batches: 1  Memory Usage: 8kB
                     ->  Nested Loop Anti Join  (cost=0.00..27209.79 rows=1 width=4) (actual time=966.879..966.880 rows=0 loops=1)
                           Join Filter: (t.id <> t_1.id)
                           Rows Removed by Join Filter: 64
                           ->  Seq Scan on t t_1  (cost=0.00..6172.60 rows=318160 width=4) (actual time=0.018..133.848 rows=320064 loops=1)
                           ->  Materialize  (cost=0.00..9006.40 rows=318160 width=4) (actual time=0.000..0.000 rows=1 loops=320064)
                                 ->  Seq Scan on t  (cost=0.00..6172.60 rows=318160 width=4) (actual time=0.016..0.017 rows=2 loops=1)
 Planning Time: 2.011 ms
 Execution Time: 967.468 ms
(18 rows)

从上可知,lightdb的rownum实现和pg原生的limit offset差异不大。并没有可感知的对性能造成影响。

标签:rows,actual,LightDB,..,示例,cost,loops,rownum,id
From: https://www.cnblogs.com/lightdb/p/15862251.html

相关文章

  • 【Go语言基础——一个Go语言项目典型的文件结构示例】
    1.在一个Go语言项目中,文件结构通常遵循一定的约定和最佳实践。以下是一个典型的Go项目结构示例,以及每个部分的说明:my-go-project/├──cmd/│├──myapp/││└──main.go#主程序入口├──internal/│├──pkg1/#......
  • 优化 Windows 触控笔的设置,你可以创建一个 .reg 文件来修改注册表。下面是一个示例内
    优化Windows触控笔的设置,你可以创建一个.reg文件来修改注册表。下面是一个示例内容,你可以根据需要进行调整:打开记事本或任何文本编辑器。将以下内容复制并粘贴到文件中:CopyCodeWindowsRegistryEditorVersion5.00;优化触控笔设置[HKEY_CURRENT_USER\Software\Mi......
  • <<迷雾>> 第 3 章 怎样才能让机器做加法 示例电路
    全加器示意图info::操作说明鼠标单击开关切换开合状态primary::在线交互操作链接https://cc.xiaogd.net/?startCircuitLink=https://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch03-01-full-adder.txt原图由3个全加器组成的3比特加法机info......
  • @action【示例】
    urls.pyfromdjango.urlsimportpathfromutils.ext_urlimportrbac_pathfromutils.routerimportRbacSimpleRouterfromapiimportviewsrouter=RbacSimpleRouter()router.register(r"user",views.UserView,text="用户")#user-listuse......
  • GaussDB SQL基础语法示例-GOTO语句
    一、前言SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。GOTO语句是直观基本的控制流语句,会导致控制流发生无条件更改。它用于分流至使用SQL过程中定......
  • GaussDB SQL基本语法示例-CASE表达式
    一、前言SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。二、CASEExpression(CASE表达式)介绍在GaussDBSQL中,CASE表达式(CASEExpression)是一个非常强大......
  • 与 USB 优盘优化相关的 .reg 文件示例。这些设置可以帮助提高 USB 存储设备的性能和管
      WindowsRegistryEditorVersion5.00;启用快速删除模式(防止意外数据丢失)[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor]"Start"=dword:00000003;确保USB存储服务启动;提高USB数据传输速度[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi......
  • FFmpeg 初学者需要掌握的基础知识和实用技能。每个部分可以深入讲解,提供具体的命令示
    FFmpeg初级使用教程大纲1. FFmpeg简介什么是FFmpegFFmpeg的主要功能安装FFmpeg2. 基本命令格式FFmpeg的基本命令结构输入与输出文件的指定常用选项的介绍3. 常用命令示例转换视频格式示例:将MP4转换为AVI提取音频示例:从视频中提取音频压缩视......
  • 优化 Windows 系统中的万兆网卡(10Gbps 网卡)可以通过修改注册表来实现。以下是一些常见
    优化Windows系统中的万兆网卡(10Gbps网卡)可以通过修改注册表来实现。以下是一些常见的注册表设置示例,可以帮助提高网络性能。 常用的注册表设置启用TCP窗口扩大路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters值:TcpWindowSize类型:DWORD数据:0......
  • <<迷雾>> 第 2 章 用电来表示数 示例电路
    开关的通断对应着1和0info::操作说明鼠标单击开关切换开合状态primary::在线交互操作链接https://cc.xiaogd.net/?startCircuitLink=https://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch02-01-represent-number-by-switch.txt原图通过使用多......