下面是SAMPLE语法的使用示例:

选择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)的优化法则.

注意:

The use of statistically incorrect assumptions when using this feature can lead to incorrect or undesirable results.

这句话不太理解,估计是说采用样本采集特性可能会产生不准确的结果集。

mysql sample函数_SAMPLE函数相关推荐

  1. mysql aes encrypt_mysql加密函数aes_encrypt()和aes_decrypt()使用教程

    aes_encrypt()和aes_decrypt()在mysql中是进行加密了,我们今天一起来和各位看看关于mysql中aes_encrypt()和aes_decrypt()函数的使用例子. 如果你 ...

  2. 常用MySQL函数存储过程_解析MySQL存储过程、常用函数代码

    mysql存储过程的概念: 存储在数据库当中可以执行特定工作(查询和更新)的一组SQL代码的程序段. mysql函数的概念: 函数是完成特定功能的SQL语句,函数分为内置函数和自定义函数(user-d ...

  3. oracle迁移mysql视图中函数问题,mysql中to_char自定义函数。

    迁移到mysql中会遇到函数迁移问题,我们可以自定义函数 DELIMITER $$ CREATE FUNCTION new_data_report.to_char(Intnumber int) RET ...

  4. mysql 时区与时间函数

    --在mysql中可以直接使用sleep()函数,sysdate函数返回的是执行到当前函数的时间,而now函数返回的是执行sql的时间 mysql> SELECT now(),SYSDATE() ...

  5. mysql存储过程与自定义函数

    2019独角兽企业重金招聘Python工程师标准>>> #mysql存储过程与自定义函数: delimiter $ 1.最简单的存储过程 create procedure test( ...

  6. MySQL 获得当前日期时间 函数

    MYSQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段 format:日期格式 返回系统日期,输出 ...

  7. MYSQL数值运算符和函数用法

    mysql也有数值运算,那么列出常见的函数 ceil() div() floor() mod() power() round() truncate()等等,具体说说MYSQL数值运算符和函数用法. 1 ...

  8. Mysql日期时间Extract函数介绍

    MySQL日期时间Extract函数的优点在于可以选取日期时间的各个部分,从年一直到微秒,让我们对MySQL日期时间的处理更为轻松. MySQL 日期时间 Extract(选取)函数. 1. 选取日期 ...

  9. mysql function加速_MySQL - 函数(FUNCTION)

    about MySQL提供了丰富的内置函数自定义函数. 而我们也对这些函数有所了解,比如聚合函数. 本篇再来了解一些内置函数和自定义函数的编写. 写在前面的话:默认情况下,函数名称和其后的括号之间必须 ...

最新文章

  1. 利用Tencent(腾讯)SCF函数部署自动签到获得容量(天翼云盘)
  2. 3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
  3. android 如何实现无限列表,在Android中解析和创建无限/无限级别的List /子列表中的XML...
  4. RocketMQ错误消息重试策略之Consumer的重试机制(Exception情况)
  5. MySQL存储过程+游标+触发器
  6. 2022年中国大学生学习与发展白皮书
  7. 【华为云实战开发】2.Docker镜像部署怎么玩才酷炫?
  8. iQOO Pro 5G版今日正式开售:售价最亲民的5G旗舰
  9. STL的string
  10. 英语音标原来这么丰富,换个角度把欧洲语言作为一个体系
  11. windows电脑记事本怎么自由排序?
  12. 通过python获取浏览器cookie
  13. python 贴吧小爬虫案例
  14. Android 自定义View实现拖动滑块完成验证
  15. java弹幕爬取,手把手教你爬取B站弹幕(超详细)!
  16. JS初学者使用jQuery开发一款弹幕射击游戏
  17. 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,求该数
  18. 超市产品关联性分析——天池竞赛
  19. AddHeader使用方法
  20. android添加悬浮窗,在Android中使用WindowManager实现悬浮窗口

热门文章

  1. ELK根据服务类型收集多个容器数据
  2. 一次百万长连接压测 Nginx OOM 的问题排查分析
  3. ELK应用之Filebeat
  4. Ubutnu中ln创建软连接失败
  5. 集群、负载、并发介绍
  6. eclipse 启动服务后,部署的文件一直是旧的文件的原因分析
  7. 【Oracle】解锁用户
  8. 网络管理与维护作业9
  9. Django链接Mysql 8.0 出现错误(1045:Access denied for user ‘root‘@‘localhost‘ (using password: NO) 的一种解决方法
  10. 升级xcode7.0 第三方库不能用的解决方法(bitcode是什么鬼?)