今天說一下 tablesample 這個東西

来源:http://www.cnblogs.com/Gin-23333/archive/2016/02/05/5182825.html
-Advertisement-
Play Games

TableSample 平時用得少,基本上就是用於表裡面抽樣數據來看的。 用法如下 SELECT * FROM tbname TABLESAMPLE SYSTEM (N PERCENT/M Rows) REPEATABLE() TABLESAMPLE SYSTEM 這個表示使用System的方法進行


TableSample 平時用得少,基本上就是用於表裡面抽樣數據來看的。

用法如下

SELECT * FROM tbname TABLESAMPLE SYSTEM (N PERCENT/M Rows)  REPEATABLE()
TABLESAMPLE SYSTEM 這個表示使用System的方法進行數據抽樣。(目前我也只知道有System這個方法)
N PERCENT/M Rows 可以選擇抽樣多少行,也可以抽樣多少百分比
REPEATABLE 關鍵字裡面還可以填入一個種子值,填充了之後每次可以得到一致的結果。
下麵做實驗,創建一個測試表
CREATE TABLE [dbo].[Tmp123]
(
[ID] [int] NOT NULL IDENTITY(1, 1),
[Col1] [char] (200) 
) ON [PRIMARY]
GO

塞進去500條數據

INSERT INTO dbo.Tmp123
        ( Col1 )
VALUES  ( 'abcd'  )

GO 500

大概看了一下下,DBCC IND('Test','Tmp123',-1) 占用了15個數據頁,然後我們使用 tablesample 來進行抽樣

SELECT * 
    FROM dbo.Tmp123 TABLESAMPLE (25 ROWS) 

這裡執行之後發現。大概2次有1次沒有返回任何數據,然而返回的數據也並不是準確的25條。

這就是TableSample 的特性,是因為sql server 會根據System方法隨機決定是否要讀取該數據頁的數據進行顯示,只能說,請求的行數越多,會越接近TableSample裡面請求的行數。

那我們就可以進行一個變形

SELECT top 25 * 
    FROM dbo.Tmp123 TABLESAMPLE (25 ROWS) 

加上Top 去控制,那麼得到的行,最多是25行,但是也會有少於25行的情況出現。so ……你懂的~

然後再說下我瞭解到的情況,為什麼返回的幾率是差不多一半一半呢?是這樣紙的

1、這個表占用了15個數據頁,總數據量是500條,我請求了25條 ,占比是  25/500 = 5% (是的,無論請求行數還是百分比,都會轉換為百分比進行運算)

2、那麼每個數據頁的讀取可能性就是 5% 了~一共15個數據頁,其中沒有結果返回的概率是  (1-5%)^15 = 43% ,差不多50%,所以調用的時候就覺得一半一半,樣例越多越趨近這個結果

3、那如果現實的行比實際多,也是因為這個概率問題。如果表裡面的數據越多,請求的行數越多,越接近請求的值。

4、如果真想精確的控制行數來實現隨機,那麼請用 

   

SELECT top 25 * 
    FROM dbo.Tmp123 
        ORDER BY NewID()

好~說完了~

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • js如何將字元串轉換數值類型:在實際應用中,可能需要將字元串類型轉換為數值類型,下麵就介紹一下如何實現此功能。一.轉換為整數: var strNum="3.1415926"; console.log(typeof(strNum)); console.log(parseInt(strNum)); co
  • css選擇器大於號>的作用是什麼:本章節介紹一下CSS選擇器中的大於號的作用。由於以前瀏覽器支持的問題,可能吃選擇器較少使用,但是隨著時間的推移,版本的更新,相容性已經不是問題,所以它的應用也就多了起來,下麵就通過代碼實例做一下簡單介紹。此選擇器能夠匹配指定元素的所有一級子元素。代碼實例: <!DO
  • 假期前最後一彈,iOS開發進階系列第五篇,希望對你能有所啟發! 另外,喜歡寫博客的博主可以申請加工程師博主交流群:391519124,分享你的博文,和大牛們一起交流技術~ 一、iOS 開發中的 Self-Manager 模式 創業公司的iOS程式員不容易啊,時常面對單挑一個項目的狀況,不過這也是能快
  • -(void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat sectionHeaderHeight = 20; if (scrollView.contentOffset.y <= sectionHeaderHeight&&scrol
  • 1:伺服器端/** * Created by LiuFei on 2016/1/22. */public class HttpService extends Service{ @Override public IBinder onBind(Intent intent) { return null;
  • 第一版: ListView一屏顯示多少對象其內部就創建多少View對象。滑動時退出的緩存對象留給滑進去時調用getView傳的convertView。因為如果每次都findViewById查找創建視圖對象,浪費性能和記憶體。所以我們都利用佈局創建View給convertView。佈局內部的view對象
  • 排名函數三兄弟,一看名字就知道,都是為了排名而生!但是各自有各自的特色!以下一個例子說明問題!(以下慄子沒有使用Partition By 的關鍵字,整個結果集進行排序) RANK 每個值一個排名,同樣的值排同樣的位置,如第一名有2個,下一個值就要排第三,如此類推,表現如下麵的 RandNr 列 DE
  • 在當今這個多種不同資料庫混用,各種不同語言不同框架融合的年代(一切為了降低成本並高效的提供服務),知識點多如牛毛。雖然大部分SQL腳本可以使用標準SQL來寫,但在實際中,效率就是一切,因而每種不同廠商的SQL新特性有時還是會用到,這部分內容更是讓人抓瞎,常常會由於一些很簡單的問題花很久來搜索準確答案
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...