<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
如果一條一條插入普通表的話,效率太低下,但記憶體表插入速度是很快的,可以先建立一張記憶體表,插入資料後,在匯入到普通表中。
View Code
普通表引數設定和記憶體表相同,否則從記憶體表往普通標匯入資料會報錯。
View Code
產生偽隨機碼user_id
要用到儲存函數。
View Code
儲存過程是儲存起來的可以接受和返回使用者提供的引數的Transact-SQL 語句的集合,可以建立一個過程供永久使用。
View Code
5、呼叫儲存過程
call 就是呼叫儲存過程或者函數,這裡呼叫儲存過程1000000次
CALL add_vote_memory(1000000)
將記憶體表中的資料匯入普通表。
INSERT into vote_record SELECT * from vote_record_memory
如果報錯記憶體滿了,報錯資訊如下:
CALL add_vote_memory(1000000) > 1114 - The table 'vote_record_memory' is full > 時間: 74.61s
則可以使用命令檢視記憶體表和臨時表允許寫入的最大值:
show variables like '%%table_size%'
MySQL預設16M:
修改預設記憶體設定:
set session tmp_table_size=1024*1024*1024; set session max_heap_table_size=1024*1024*1024;
設定修改後,再執行上述呼叫儲存過程和資料匯入步驟。
檢視記錄,是否有插入100W條資料。
select count(*) AS total from vote_record
測試插入800W條資料,call 呼叫儲存過程800W次。
檢視結果:
800W條測試資料插入OK,想插入多少條測試資料就呼叫n次儲存過程,CALL add_vote_memory(n)。
所謂的深度分頁問題,涉及到mysql分頁的原理。通常情況下,mysql的分頁是這樣寫的:
select id, user_id, vote_id, group_id from vote_record limit 200, 10
SQL意思就是從vote_reccord 表裡查200到210這10條資料即【201,210】,mysql會把前210條資料都查出來,拋棄前200條,返回10條。當分頁所以深度不大的時候當然沒問題,隨著分頁的深入,sql可能會變成這樣:
select id, user_id, vote_id, group_id from vote_record limit 7999900, 10
這個時候,mysql會查出來7999920條資料,拋棄前7999900條,如此大的資料量,速度一定快不起來。
那如何解決呢?一般情況下,最簡單的方式是增加一個條件,利用表的覆蓋索引來加速分頁查詢:
select id, user_id, vote_id, group_id from vote_record where id > 7999900 limit 10
我們都知道,利用了索引查詢的語句中如果只包含了那個索引列(覆蓋索引),那麼這種情況會查詢很快。
因為利用索引查詢有優化演演算法,且資料就在查詢索引上面,不用再去找相關的資料地址了,這樣節省了很多時間。上述vote_record 表的id欄位是主鍵,自然就包含了預設的主鍵索引,這樣,mysql會走主鍵索引,直接連線到7999900處,然後查出來10條資料。但是這個方式需要介面的呼叫方配合改造,把上次查詢出來的最大id以引數的方式傳給介面提供方,會有一定溝通成本。
優化前,查詢耗時2.362s,隨著資料的增大耗時會更多,limit語句的查詢時間與起始記錄的位置成正比。
優化後,耗時0.012s,效能提升了196.8倍。
到此這篇關於MySQL如何快速建立800w條測試資料表的文章就介紹到這了,更多相關MySQL建立測試資料表內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45