700萬資料隨機取10條僅用不到10ms?

2022-02-28 03:48:19 字數 922 閱讀 3895

雖然有點唬人,但是在實際開發中,確實會遇到此類需求但是要求又不是很嚴格,那樣的話用這個方式還是比較不錯的選擇

呵呵 以下內容** 來自csdb論壇

blog文章

sql code

set nocount on
--75151448行資料
select

count(*) from syscolumns a,syscolumns b,syscolumns c

set

statistics

time

on

select

top 10 * from(

select a.name as name,left(b.name,10) as name1, checksum(newid()) as hash
from syscolumns a,syscolumns b,syscolumns c )t
where hash%100=0
set

statistics

time

off

set nocount off

cpu 時間 = 16 毫秒,占用時間 = 4 毫秒。

這麼bt?不過仔細一看是唬人的,這個是偽隨機,後面數百萬的大部分資料是一輩子都不會有機會顯示的。但這是乙個思路,where hash%100=0 這句話當中的100是個關鍵的因素。

要做到真的隨機,至少需要hash%700000,同樣的機器需要20秒,不過個人覺得已經很不錯了。如果是hash%70000則是2秒,可以看出這基本是個線性關係。此思路應該比order by newid更加實用吧,order by newid()的top 10 我在執行了2分半還沒有反應後放棄了。

mysql取10條 mysql 獲取隨機10條資料

explain命令在解決資料庫效能上是第一推薦使用命令,大部分的效能問題可以通過此命令來簡單的解決,explain可以用來檢視 sql 語句的執行效 果,可以幫助選擇更好的索引和優化查詢語句,寫出更好的優化語句。explain語法 explain select from where 例如 expla...

php實現匯出10萬條資料

開發中經常遇到需要從資料庫匯出大量資料的問題,匯出excel需要占用太多記憶體,最終回導致記憶體溢位而失敗。csv是更好的選擇。同時可以使用php5.5之後賦予的新功能 yield 生成器 來優化效能,具體可以看鳥哥部落格 分段匯出所有使用者 public function exportall as...

從資料庫獲取 10 條隨機資料

sql server select top 10 from t user order by newid oracle select from select from t user order by dbms random.random where ronum 10 mysql 從 mysql 隨機選...