- 浏览: 1589936 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
Oralce随机数
select * from (select * from fbb_bagitem order by dbms_random.value) where rownum=1
首先第一个是随机抽取6个
select * from (select * from tablename order by dbms_random.value) where rownum<7
这个方法的原理我认为应该是把表中的数据全部查询出来按照随机数进行排列后在从查询出来的数据中查询中6条记录,这个方法我在使用的过程中发现,如果记录一多的话查询的速度有一点点的慢
第二个是利用oracle的sample()或sample block方法
选择10%的记录
select * from t1 sample(10)
选择0.1%的记录
select * from t1 sample(0.1)
根据数据块选择1%的记录
select * from t1 sample block(1)
使用数据块选择与使用记录行选择的区别:使用数据块选择表示样本的采集是基于数据块采集的,也就是说样本如果一个数据块被采集为样本,则数据块里的记录全部都是样本
样本统计是基于统计学采集的,是有概率问题,不一定完全准确,如你要取50%的记录,但实际可能返回给你49%的记录集,也可能返回给你51%的记录集
例如
如果表T1有数据块B1,B2
B1有记录R1,R2,R3,R4,R5
B2有记录R6,R7,R8,R9,R10
如果使用如下SQL选择50%的数据
select * from t1 sample block(50)
则返回的结果可能是数据块B1的记录
R1,R2,R3,R4,R5
也可能是数据块B2的记录
R6,R7,R8,R9,R10
也可能不返回记录集
如果使用如下SQL选择50%的数据
select * from t1 sample (50)
则返回的结果可能是
R2,R3,R5,R8,R9
也可能是如下的样子
R1,R3,R4,R8
应用示例:
随机从表中取中1条记录,选取记录的概率是1%
select * from t1 sample(1) where rownum=1
随机从表中取中10条记录,选取记录的概率是0.1%
select * from t1 sample(0.1) where rownum<=10
注:当选取的概率越低,访问表的记录数将越多
ORACLE参考手册中的相关说明:
sample_clause
The sample_clause lets you instruct Oracle to select from a random sample of rows from the table, rather than from the entire table.
BLOCK
BLOCK instructs Oracle to perform random block sampling instead of random row sampling.
sample_percent
sample_percent is a number specifying the percentage of the total row or block count to be included in the sample. The value must be in the range .000001 to (but not including) 100.
Restrictions on Sampling During Queries
You can specify SAMPLE only in a query that selects from a single table. Joins are not supported. However, you can achieve the same results by using a CREATE TABLE ... AS SELECT query to materialize a sample of an underlying table and then rewrite the original query to refer to the newly created table sample. If you wish, you can write additional queries to materialize samples for other tables.
When you specify SAMPLE, Oracle automatically uses cost-based optimization. Rule-based optimization is not supported with this clause.
--------------------------------------------------------------------------------
Caution:
The use of statistically incorrect assumptions when using this feature can lead to incorrect or undesirable results.
--------------------------------------------------------------------------------
译:
Sample选项
使用sample选项的意思是指定Oracle从表中随机选择记录样本,这样比从整个表中选择更高效.
block选项
加上 BLOCK选项时表示随机取数据块,而不是随机取记录行.
sample_percent选项
sample_percent是指定总记录行或数据块为数据样本的百分比数值,这个值只能在0.000001到100之间,且不能等于100
限制
只能在单表查询的SQL中指定sample选项,不支持有连接的查询。但是,你可以使用CREATE TABLE ... AS SELECT查询的语法完成同样的效果,然后再采用新建的样本表重新编写查询SQL。
当你指定用sample时,不支持基于规则(rule)的优化法则,ORACLE自动使用基本成本(cost)的优化法则
select * from (select * from fbb_bagitem order by dbms_random.value) where rownum=1
首先第一个是随机抽取6个
select * from (select * from tablename order by dbms_random.value) where rownum<7
这个方法的原理我认为应该是把表中的数据全部查询出来按照随机数进行排列后在从查询出来的数据中查询中6条记录,这个方法我在使用的过程中发现,如果记录一多的话查询的速度有一点点的慢
第二个是利用oracle的sample()或sample block方法
选择10%的记录
select * from t1 sample(10)
选择0.1%的记录
select * from t1 sample(0.1)
根据数据块选择1%的记录
select * from t1 sample block(1)
使用数据块选择与使用记录行选择的区别:使用数据块选择表示样本的采集是基于数据块采集的,也就是说样本如果一个数据块被采集为样本,则数据块里的记录全部都是样本
样本统计是基于统计学采集的,是有概率问题,不一定完全准确,如你要取50%的记录,但实际可能返回给你49%的记录集,也可能返回给你51%的记录集
例如
如果表T1有数据块B1,B2
B1有记录R1,R2,R3,R4,R5
B2有记录R6,R7,R8,R9,R10
如果使用如下SQL选择50%的数据
select * from t1 sample block(50)
则返回的结果可能是数据块B1的记录
R1,R2,R3,R4,R5
也可能是数据块B2的记录
R6,R7,R8,R9,R10
也可能不返回记录集
如果使用如下SQL选择50%的数据
select * from t1 sample (50)
则返回的结果可能是
R2,R3,R5,R8,R9
也可能是如下的样子
R1,R3,R4,R8
应用示例:
随机从表中取中1条记录,选取记录的概率是1%
select * from t1 sample(1) where rownum=1
随机从表中取中10条记录,选取记录的概率是0.1%
select * from t1 sample(0.1) where rownum<=10
注:当选取的概率越低,访问表的记录数将越多
ORACLE参考手册中的相关说明:
sample_clause
The sample_clause lets you instruct Oracle to select from a random sample of rows from the table, rather than from the entire table.
BLOCK
BLOCK instructs Oracle to perform random block sampling instead of random row sampling.
sample_percent
sample_percent is a number specifying the percentage of the total row or block count to be included in the sample. The value must be in the range .000001 to (but not including) 100.
Restrictions on Sampling During Queries
You can specify SAMPLE only in a query that selects from a single table. Joins are not supported. However, you can achieve the same results by using a CREATE TABLE ... AS SELECT query to materialize a sample of an underlying table and then rewrite the original query to refer to the newly created table sample. If you wish, you can write additional queries to materialize samples for other tables.
When you specify SAMPLE, Oracle automatically uses cost-based optimization. Rule-based optimization is not supported with this clause.
--------------------------------------------------------------------------------
Caution:
The use of statistically incorrect assumptions when using this feature can lead to incorrect or undesirable results.
--------------------------------------------------------------------------------
译:
Sample选项
使用sample选项的意思是指定Oracle从表中随机选择记录样本,这样比从整个表中选择更高效.
block选项
加上 BLOCK选项时表示随机取数据块,而不是随机取记录行.
sample_percent选项
sample_percent是指定总记录行或数据块为数据样本的百分比数值,这个值只能在0.000001到100之间,且不能等于100
限制
只能在单表查询的SQL中指定sample选项,不支持有连接的查询。但是,你可以使用CREATE TABLE ... AS SELECT查询的语法完成同样的效果,然后再采用新建的样本表重新编写查询SQL。
当你指定用sample时,不支持基于规则(rule)的优化法则,ORACLE自动使用基本成本(cost)的优化法则
发表评论
-
常见ETL工具一览
2017-08-08 11:05 2582ETL(Extract-Transform-Load的 ... -
Oralce 随手笔记(二)
2014-11-03 08:58 2060151 查询当前用户自己有多少张表 user_tabl ... -
Oracle 随手笔记(一)
2014-11-02 02:01 1486--author: luobin --data: 201 ... -
Oracle 触发器
2014-11-02 01:54 1326---before 触发器 在 dml 操作之后-- ... -
Oralce 开发包 和 游标
2014-11-02 01:53 1491--_________________________ ... -
Oralce 存储过程 和 函数
2014-11-02 01:49 1035--___________ ... -
Oracle 顺序控制,异常处理,动态sql
2014-11-02 01:45 1812-----------------顺序控制-------- ... -
Oracle 流程控制 和 循环控制
2014-10-30 20:31 732--_______________________ ... -
Oracle 索引 和 PL/SQL
2014-10-30 20:30 1665--____________________ ... -
Oracle 序列 和 视图
2014-10-30 20:27 880-------------------- ... -
Oralce DDL,DML,DQL,DCL,TCL
2014-10-30 20:22 1070--Oracle --day:2010-4-8 ... -
Oralce Case When的用法
2013-10-16 17:05 2179--简单Case函数 CASE sex W ... -
Oracle 存储过程的使用
2013-03-20 20:14 2353本文主要是总结 如何实现 JDBC调用Oracle的存储过程, ... -
Oracle DDL,DML,DCL,TCL
2013-03-06 16:52 0DDL DDL(Data Definition Langu ... -
Oracle SQL优化
2013-03-06 12:03 2057ORACLE SQL 优化 1.访问 Tab ... -
Ibatis 整合spring + Struts2 加入OSCACHE
2012-11-14 00:10 4554说明: 使用 spring2.5 +ibatis2.3 ... -
Oracle 常用函数
2012-08-31 02:12 27961.得到字符串中的第一 ... -
Oracle 子查询等常见的sql语句
2012-08-23 00:07 6141oracle 对于汉字,如果数据库字符编码为 GBK 占用2个 ... -
Oracle 常用数据类型
2012-08-22 22:05 15301.字符类型 char(2000):定长的,最大为2000 ... -
Oracle 联机备份 脱机备份 物理备份 恢复
2012-08-12 05:10 41501.备份 指的是拥有数据 ...
相关推荐
本文将深入探讨如何利用一条SQL语句在Oracle中快速生成10万条测试数据,这对于数据库管理员和开发人员来说是一项极为实用的技能。 ### 核心知识点:使用SQL生成大量测试数据 #### 1. **理解ROWNUM和CONNECT BY ...
在Oracle数据库中,通过一条SQL语句快速生成大量测试数据是一项非常实用的技能。本文将详细介绍如何利用Oracle中的特性来实现这一目标。 ### 核心知识点:使用一条SQL语句快速生成10万条测试数据 #### 1. 使用`...
在 Oracle 中抽取随机数是许多应用场景中常见的问题,例如在某个活动中需要随机取出一些符合条件的用户,以颁发获奖通知或其它消息。本文将通过实例讲解如何抽取随机数的多种方法。 首先,我们可以使用 Oracle 自带...
【标题】"Kettle生成1亿条数据导入Oracle"是一个关于使用开源ETL工具Kettle进行大数据处理的实践案例。Kettle,又称Pentaho Data Integration(PDI),是一款强大的数据转换和集成工具,能够有效地处理和转换大量...
在SQL(Structured Query Language)中,随机提取数据是一项常见的需求,尤其在数据分析、测试或样例展示时。这里我们将深入探讨如何在SQL中实现这一功能,以满足“SQL随机抽取N条记录”的需求。 首先,我们需要...
总结来说,`ROWNUM`是Oracle数据库中一种强大的工具,它可以方便地用于选取特定行或实现分页查询,但在处理并发操作时需要注意并发控制,以防止数据不一致。了解并熟练掌握`ROWNUM`以及相关的分析函数,对于优化...
上述SQL语句将从表`AS`中抽取1%的记录,然后进一步限制结果集为一条记录。 此外,Oracle还支持`DBMS_RANDOM`包,这是一个强大的随机数生成器,可以用来辅助实现更复杂的抽样需求。如: ```sql SELECT * FROM ...
配合`ORDER BY`和`LIMIT`子句,我们可以随机选取表中的10条数据: ```sql SELECT * FROM T_USER ORDER BY RAND() LIMIT 10 ``` `RAND()`函数使数据集无序,然后`LIMIT`限制返回的行数。 4. **Access** Access...
在PL/SQL中,可以声明一个游标,执行SQL查询,并通过循环遍历游标来显示记录集中的每一条信息。 2. **子程序_转换到SQL时间**: 数据库中的时间数据通常以特定的格式存储,例如TIMESTAMP或DATE类型。在处理这些...
EXISTS子句在找到至少一条符合条件的记录时就会返回TRUE,而不关心具体有多少条符合条件的记录;相反,NOT EXISTS子句则用于判断是否不存在符合条件的记录。 3. WITH子句,又称为公用表表达式(Common Table ...
最后,价值密度低(Value)表明虽然单条数据可能价值不高,但大数据集中的大量数据蕴含着潜在的巨大价值。在大数据的背景下,数据的价值挖掘需要依赖于先进的技术和方法,如大数据的超高速装载技术,它能够将数据...
而价值则代表了在大量的数据中,单条数据可能没有价值,但通过分析和处理,能够发现数据背后的价值和洞察。 Oracle大数据解决方案是一种综合性的解决方案,它利用Hadoop的分布式架构来存储和处理大量非结构化数据,...
**问题**: 如何在Oracle中随机抽取前N条记录? **解答**: 可以使用`RAND`函数配合`RANK`函数来实现。 - **示例**: 抽取前5条记录: ```sql SELECT * FROM ( SELECT t.*, RANK() OVER (ORDER BY DBMS_RANDOM.VALUE...
- **实现按“ENTER”自动跳至下一条记录**:使用 Forms 的内置事件处理逻辑,例如使用 WHEN-NEW-RECORD-INSTANCE 触发器来实现自动跳转。 - **使用堆叠画布**:这是一种用于布局管理的技术,可以实现在有限的空间内...
MySQL随机查询出一条记录: 代码如下: — 下面的查询语句效率高,不要使用 SELECT * FROM table1 ORDER BY rand() LIMIT 1 来查询 SELECT * FROM table1 WHERE id=(SELECT id FROM table1 ORDER BY rand() LIMIT 1)...
在处理大量数据时,有时我们需要从数据库中随机抽取一部分记录来进行数据分析、测试或者展示等操作。本文将详细介绍如何从数据库中随机取出10条记录的方法,并提供多种不同数据库系统的实现方式。 #### 1. 原理介绍...
为了保证数据的一致性和完整性,Oracle数据库提供了一系列机制来管理和解决这些情况。 #### 二、Oracle中的锁机制 在深入讨论Oracle解锁和死锁之前,我们首先需要了解Oracle数据库中的锁机制。 1. **共享锁(S)**...