- 浏览: 272145 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (116)
- 开发工具 (21)
- Spring (5)
- Java (12)
- 面试题 (7)
- Hibernate (3)
- JavaScript (9)
- Jquery控件 (2)
- 自定义标签 (1)
- 错误总结 (3)
- Struts2+Juqery_qtip2 Form标签验证扩展 (1)
- Struts+Spring+MyBates (0)
- Oracle (37)
- Oracle错误总结 (5)
- J2EE (2)
- 研发管理 (1)
- MyBatis (1)
- Struts (1)
- Struts2 (1)
- PostgreSQL (1)
- weblogic (1)
- PL/SQL Developer (3)
- JSP (1)
- HTML (1)
- XHTML (1)
- JQuery (1)
最新评论
-
kyoldj:
select t.*, rownum rn
4. ...
oracle分页所遇到的rownum问题:要增加order by的唯一性 -
tanghuan:
不错不错
开发者如何提升和推销自己
在MySQL里可以用rand()、ORACLE里可以用dbms_random.value、MSSQL里可以用rand或newID(不是随机函数,但也可以用它达到目的).
例如:
MYSQL里随机提取USERS表里的20条记录
select * from USERS order by rand() limit 20
ORACLE里则可以写成
1.select * from USERS where rownum<=20 order by dbms_random.value
dbms_random.value(1,100) 这个表示产生随机数的范围从1到100,一般是小数点...
2.先用一个子查询找出所有符合条件的,再随机排序,在外层取top n
select * from (select object_name from all_objects order by dbms_random.random )where rownum<10;
3.用SELECT...SAMPLE(百分比)
SAMPLE是随机从表中取数据,这发生在WHERE过滤之前,也就是说你的组合条件有可能在SAMPLE中不存在,那么一条数据也取不到。可以考虑这个方法:
建一个临时表存放所有满足WHERE条件的数据,用动态SQL 做INSERT...SELECT, 根据SQL%ROWCOUNT来决定是否取SAMPLE以及SAMPLE的百分比。然后再用ROWNUM精确控制返回行数,比如:
select * from (SELECT * FROM TMP SAMPLE (0.1)) where rownum<=10;
以上是从临时表TMP随机取 0.1% 的数据,再返回前10行。
这方法好处是省略了order by dbms_random.random的开销, 但是前面的INSERT可能代价很大。这是无法避免的,你必须知道所有满足条件的数据才能从中随机选择。
如果INSERT的结果很小,那么就在临时表上用order by dbms_random.random的方法,因为SAMPLE不能保证返回确定百分比的数据。
4.新建了一个测试表Test,里面只有一个递增的字段“ID”,1万条数据。测试脚本中需把insert语句中的select子句作相应的替换
方法一,使用随机数:
1 |
select * from (
|
2 |
select * from test order by dbms_random.value
|
3 |
) where rownum <= 50
|
这是最原始的方法,测试脚本执行了49分钟还没结束,手动停了。测试结果能涵盖1万条数据,命中次数最高是343次,最低是209次
优点:随机性好
缺点:性能差
方法二,使用sample函数:
1 |
select * from test sample(10) where rownum<=50;
|
测试脚本11秒就执行完,但测试结果只涵盖了805条数据,并且分布非常不均匀,命中次数最高是10133次,最低只有1次
优点:性能最好
缺点:随机性最差
方法三,结合sample和随机数:
1 |
select * from (
|
2 |
select * from test sample(10) order by dbms_random.value
|
3 |
) where rownum <= 50
|
先用sample抽取部分数据,再用随机数排序。测试脚本运行10分钟,测试结果涵盖1万条数据,命中次数最高589次,最低423次
优点:性能比方法一好,随机性比方法二好
缺点:因为用了sample函数,当数据量比较少时,不能保证每次都能返回50条样本数据。抽样的表不能用dblink
测试脚本
01 |
declare |
02 |
l_num number := 1;
|
03 |
begin |
04 |
execute immediate 'truncate table test_result' ;
|
05 |
while l_num <= 100000 loop
|
06 |
insert into test_result
|
07 |
(result)
|
08 |
( select *
|
09 |
from ( select * from test order by dbms_random.value)
|
10 |
where rownum <= 50);
|
11 |
if mod(l_num, 1000) = 0 then
|
12 |
commit ;
|
13 |
end if;
|
14 |
l_num := l_num + 1;
|
15 |
end loop;
|
16 |
commit ;
|
17 |
end ;
|
MSSQL里则可以写成
select top 20 * from USERS order by newid()
发表评论
-
oracle分页所遇到的rownum问题:要增加order by的唯一性
2013-12-04 17:04 1218昨天做完项目后让测试测试了一把,测试说分页查询貌似不起作用 ... -
Oracle中GOTO的用法
2013-12-03 14:37 1842Oracle中没有continue关键字,在loop中可以用 ... -
Oracle左连接与右连接区别
2013-10-28 19:12 1804数据表的连接有: 1、内连接(自然连接): 只有两个表相匹配 ... -
Oracle sql语句执行顺序
2013-07-05 09:53 28596sql语法的分析是从右到 ... -
修改oracle11g存档模式
2013-07-01 13:39 01.archive log list命令用户查看数据库存档 ... -
Oracle11g 导出数据库
2013-07-01 13:37 1263在运行中输入exp.exe, ... -
Oracle 冷备份和冷恢复
2013-07-01 13:37 1225阅读说明 1.参数说明 COLD_BACK_DIR: 冷备 ... -
Oracle创建用户,授权
2013-07-01 09:56 11221.用system,sys账户登录 2.创建用户creat ... -
MySql,Mssql,Oracle三种数据库性能优缺点及异同
2013-07-01 09:48 7361MySql优点 MySql是一个快速、多线程、多用 ... -
ORACLE纯SQL实现多行合并一行
2013-06-08 16:06 1817项目中遇到一个需求,需要将多行合并为一行。表结构如下:NAM ... -
Oracle触发器总结
2013-06-05 10:34 26801.触发器定义:触发器 ... -
row_number() over()分析函数用法
2013-05-10 16:12 4219row_number()over(partition ... -
Oracle数据库GLOBAL_NAMES参数的详细研究
2012-11-19 14:00 1133Oracle数据库GLOBAL_NAMES参数的相关知识 ... -
Oracle dblink远程调用序列时应注意的几点
2012-11-19 13:55 1914在一条语句中 ... -
Oracle dblink小结备忘
2012-11-16 10:48 17121.查看数据库的global_name ... -
Oracle dblink远程调用存储过程、函数、序列
2012-11-16 10:46 4242一、dblink远程调用procedure: 1、写了一个 ... -
Oracle job问题解决汇总
2012-11-13 10:42 1621一、job的运行频率设置 1.每天固定时间运行,比如 ... -
Oracle job操作注意事项
2012-11-13 10:40 1403创建一个简单的JOB实列 1、创建测试表 ... -
Oracle常用日期操作
2012-11-12 16:33 1201--Oracle trunc()函数的用法 /**** ... -
Oracle SQL性能优化
2012-11-06 16:12 1246(1) 选择最有效率的表名顺序(只在基于规则的 ...
相关推荐
标题中的"SAP HANA数据库直连工具"是指用于与SAP HANA高性能内存数据库进行直接交互的软件或程序。SAP HANA是一个企业级的数据管理平台,它支持实时分析和事务处理,为业务应用程序提供了强大的数据处理能力。直连...
这篇随记将探讨哈希函数的基本概念、性质以及在实际应用中的重要性。 哈希函数,也称为散列函数,是一种特殊的算法,它将任意长度的输入(也称为预映射或消息)转化为固定长度的输出,这个输出通常被称为哈希值或...
在随记App中,可能包含了UI设计、网络请求、数据存储、用户认证等多个模块。UI设计上,开发者可能采用了Android Studio中的布局工具,如XML布局文件,来构建用户界面,包括登录注册页面、微博发布与浏览页面、博客...
- 在线存储:提供高速访问,适用于频繁访问的数据,如数据库和近期数据,具有高性能、高可靠性的特点,但成本较高。 - 近线存储:存储不常访问但需要快速存取的数据,性能介于在线和离线之间,成本较低,例如 SATA ...
在VB.NET编程中,当你需要处理数据库操作时,`OleDbDataAdapter`是一个关键组件,它负责在数据库和内存中的数据集之间传输数据。在初学者的学习过程中,理解如何有效地使用`OleDbDataAdapter`来更新数据库至关重要。...
微信小程序“小手随记”个人记账软件系统是一个基于.NET框架和SQL Server数据库的完整解决方案,旨在提供用户友好的移动记账体验。这个系统包括三个主要组成部分:前台小程序源代码、后台接口源代码和后台管理源代码...
它能够显著提升应用性能,通过将常用数据存储在内存中,避免了反复从数据库读取,降低了I/O延迟。本文将探讨EHCache的核心概念,配置方法以及如何在实际项目中应用。 **一、核心概念** 1. **缓存**:缓存是存储...
计算机网络原理随记 在本资源中,我们将讨论计算机网络的基本概念、发展历程、网络架构、协议栈、数据传输、网络互通、安全性等方面的知识点。 计算机网络的基本概念 计算机网络是指将多个计算机设备连接起来,以...
。。数据分11级存储及访问方式设计方案研究随记.pdf
。。数据分11级存储及访问方式设计方案研究随记.docx
如果文件内容确实如描述中所示,全为“活动随记一次‘出色’的朗诵会.pdf”和一些不明确的符号,那么我将无法从空白或无关的信息中提取知识点。请提供实际的文字内容,以便我进行分析并创作出丰富的内容。
标题“随记:flex发送XML到servlet”指的是在Flex应用程序中向Java Servlet发送XML数据的过程,这通常涉及到客户端与服务器端的交互。Flex是一种基于Adobe AIR或Flash Player运行时的开发框架,常用于创建富互联网...
本篇随记主要探讨的是如何在JSP环境中进行PDF打印,并涉及复杂的模板设计。PDF(Portable Document Format)是一种通用的文件格式,常用于生成保持原始文档格式不变的静态文档,适用于打印和共享。 首先,我们需要...
【标题】:“随记_电气_”提示我们这是一份关于电气工程领域的个人笔记或学习心得,可能包含了一些作者在学习或实践中积累的电气知识。 【描述】:“电气相关的知识,随手写的,不知道行不行11111”表明这份文档...
在"随记小时光设计书1"中,我们主要讨论的是用户信息和手账信息的设计,特别是在数据库方面的应用。这个设计涉及到用户信息的多个关键组成部分,包括昵称、用户名、密码、邮箱、手机号以及权限和加密key的管理。下面...
### C++ 随记知识点总结 #### 一、内存管理与 new/delete 操作符 在 C++ 中,`new` 和 `delete` 是用于动态内存分配的关键字。`new` 用于在堆区分配内存,`delete` 用于释放之前通过 `new` 分配的内存。使用 `new`...
互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf
linux net 管理随记,留着个人备忘
数据类型中,浮点型如decimal、float和double需要使用特定后缀来指定,例如decimal类型用m或M,float类型用f或F,double类型可以省略或使用d或D。字符串连接通常使用“+”运算符,但注意这不是数学意义上的加法。`...
git随记 git