`

oracle 中随机取数据的方法

阅读更多

oracle 中随机取数据的方法:

1.快速随机取数据(推荐使用):

select * from MEMBER sample(1) where rownum <= 10

2.随机取数据,较慢

select * from (
  select * from MEMBER order by dbms_random.value
) where rownum<=10

========原文========

最近在做系统时用到了随机抽取记录的问题;

     上网上查找了很多相关资料,发现了不同的方法及其差异。都是基于ORACLE的方法哦

      首先第一个是随机抽取6个

      select * from  (select * from tablename order by order by dbms_random.value) where  rownum<7

      这个方法的原理我认为应该是把表中的数据全部查询出来按照随机数进行排列后在从查询出来的数据中查询中6条记录,这个方法我在使用的过程中发现,如果记录一多的话查询的速度有一点点的慢,测试时是7000条,如果几万几十万的话可能就更慢了;

     第二个是利用oracle的sample()或sample block方法

     select * from tablename sample ( 50 ) where  rownum<6

      这个稍稍介绍一下sample

     Oracle访问数据的基本方法有:
     1.全表扫描
     2.采样表扫描

     全表扫描(Full table Scan)
     全表扫描返回表中所有的记录。
     执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件。Oracle顺序的读分配给该表的每一个数据块,这样全表扫描能够受益于多块读.
      每个数据块Oracle只读一次.

     采样表扫描(sample table scan)
     采样表扫描返回表中随机采样数据。
     这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项.

     SAMPLE选项:
     当按行采样来执行一个采样表扫描时,Oracle从表中读取特定百分比的记录,并判断是否满足WHERE子句以返回结果。

     SAMPLE BLOCK选项:
     使用此选项时,Oracle读取特定百分比的BLOCK,考查结果集是否满足WHERE条件以返回满足条件的纪录.

      Sample_Percent:
      Sample_Percent是一个数字,定义结果集中包含记录占总记录数量的百分比。
      Sample值应该在[0.000001,99.999999]之间。

      主要注意以下几点:

      1.sample只对单表生效,不能用于表连接和远程表
      2.sample会使SQL自动使用CBO

分享到:
评论

相关推荐

    Oracle里抽取随机数的多种方法

    Oracle 中抽取随机数的多种方法 在 Oracle 中抽取随机数是许多应用场景中常见的问题,例如在某个活动中需要随机取出一些符合条件的用户,以颁发获奖通知或其它消息。本文将通过实例讲解如何抽取随机数的多种方法。 ...

    oracle中随机数的获取

    在Oracle数据库中,生成随机数是一项常见的需求,特别是在数据测试、模拟或数据分析场景中。本文将详细介绍如何在Oracle SQL中获取各种类型的随机数。 首先,Oracle提供了一个内置的函数DBMS_RANDOM,它包含了一...

    oracle取随机数

    在Oracle数据库环境中,生成随机数是一项常见且实用的操作,它被广泛应用于数据模拟、测试、安全性和数据分析等领域。本文将深入探讨如何在Oracle中生成不同类型的随机数,包括字符型、数值型以及GUID,旨在为数据库...

    SQL随机提取N条记录

    如果你需要从特定位置开始随机抽取,例如在已排序的数据中进行分页,你可能需要结合OFFSET子句。例如,如果你想在MySQL中跳过前100条记录,然后随机抽取5条,可以这样写: ```sql SELECT * FROM users ORDER BY...

    Oracle数据库操作

    3. **子程序_随机取汉字**: 如果应用程序需要生成随机的汉字字符串,可以使用Oracle的内置函数或者自定义过程来实现。一种可能的方法是利用DBMS_RANDOM包中的STRING函数结合字符集范围来随机选择汉字。同时,需要...

    随机获取oracle数据库中的任意一行数据(rownum)示例介绍

    Oracle数据库中的`ROWNUM`是一个非常实用的特性,它为查询结果集的每一行赋予一个唯一的数字标识,从1开始递增。这个标识符在查询过程中动态生成,并且与表中的实际行没有直接关联,因此它不是一个真正的列,不能与...

    Oracle 汉字拼音简码获取

    本文将详细介绍Oracle数据库中实现这一功能的方法,包括函数的结构、工作原理以及实际应用场景。 #### 函数结构与原理 给定的代码片段展示了如何在Oracle数据库中创建一个名为`ZLSPELLCODE`的函数,用于获取汉字...

    oracle ebs开发文档

    这部分介绍了 Oracle EBS 中的弹性域功能,这是一种用于存储复杂数据结构的方法,可以实现高度灵活的数据建模。 **9.2 注册关键性弹性域** 这部分讲解了如何注册关键性弹性域,这对于存储和管理核心业务数据非常...

    四种数据库随机获取10条数据的方法

    本篇文章将详细介绍在四种主流的数据库系统——SQL Server、Oracle、MySQL和Access中,如何有效地获取10条随机数据。 1. **SQL Server** 在SQL Server中,我们可以利用`TOP`子句来限制返回的行数,并结合`NEWID()`...

    如何从数据库中随机取出10条记录的方法

    - **数据分析:** 在进行大数据分析时,为了快速了解数据分布情况,可以从大量数据中随机抽取一部分样本。 - **系统测试:** 开发过程中,需要对系统进行压力测试或功能测试,此时可以从数据库中随机抽取数据进行...

    为oracle调整和优化linux

    Oracle数据库在企业级应用中扮演着至关重要的角色,而其性能和稳定性往往取决于运行它的操作系统。对于基于Linux的Oracle系统,调整和优化Linux环境可以显著提升Oracle的可用性和可靠性。本文将针对Red Hat ...

    ORACLEEBS_FORM

    - **随机取前10条不同的记录**:介绍了一种获取随机样本的方法。 - **修改表的一些常用语法**:包括添加、删除字段等操作。 - **舍入函数**:如`round`等函数用于数值处理。 - **实现类似 BREAK 语句**:虽然SQL...

    Oracle EBS 开发笔记

    - **随机取前10条不同的记录**:随机抽取数据样本。 - **TRUNC函数**:截断日期或数值。 - **修改表的一些常用语法**:SQL语句用于表结构的修改。 - **舍入函数**:对数值进行四舍五入操作。 - **实现类似BREAK...

    数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)

    Oracle查询结果集,随机排序 代码如下:select * from table1 order by dbms_random.value(); MySQL随机查询出一条记录: 代码如下: — 下面的查询语句效率高,不要使用 SELECT * FROM table1 ORDER BY rand() LIMIT ...

    oracle例程高级应用窗口

    再来说说"子程序_随机取汉字"。在处理中文字符时,这个子程序可能是为了生成随机的汉字字符串,这在测试、数据填充或生成模拟数据时非常有用。它可能利用了Oracle的内置函数或者创建了一个自定义的函数,通过选择...

    Oracle-ERP(NEW)笔记

    - **随机取样**:学习如何随机选取数据库中的记录,适用于大数据分析场景。 - **TRUNC函数应用**:掌握日期截断与数值截断的使用场景。 - **表修改语法**:熟悉修改表结构的常用SQL语法,便于数据模型的调整。 - **...

    Oracle 中生成流水号的方法

    总的来说,Oracle中生成流水号的方法主要依赖于数据库的事务管理和数据更新操作,可以通过函数或存储过程封装逻辑,以确保生成的流水号具有唯一性和可追踪性。在设计时,需要考虑到并发安全和效率问题,以满足不同...

Global site tag (gtag.js) - Google Analytics