SQLServer本身並沒有提供隨機讀取記錄的功能,但我們可以通過一些方法來實現這個目的。本文介紹了其中幾種方法並比較了各自的優劣。
方法一:
直接通過Sql語句實現,如:
SELECT TOP 100 * FROM BCUSTOMER_MZN
SELECT TOP 100 * FROM BCUSTOMER_MZN ORDER BY NEWID()
這是最簡單的方法,通過調用SqlServer的newid()函數(產生GUID—全局唯一標志符)來產生隨機記錄。
采用這種方法時,需要將表中所有記錄與newid()生成的值進行比較從而進行排序。因此,如果表中的記錄較多,操作會非常緩慢。
方法二:
假設表中有一個自增長主鍵,增量為1。這時我們可以這樣處理,取出主鍵的邊界值(最大值和最小值),然后通過一個算法得到介於(包括)兩個邊界之間的隨機值,最后按照這個值取出對應記錄。
方法三:
對方法二進行了改進。主要思路是,將表中所有的主鍵值讀進一個數組,從數組中隨機讀出一個值,按照這個值取出對應記錄。