mysql - 怎么能快速地分表
問題描述
在sqlserver中現在在有一個批次碼表a,一個具體的碼表bb表里面有幾千萬條數據,查的時候太慢,現在要將碼表分表,每個表最好不超過500萬,但是同一個一個批次的碼,要放在同一個表上。.因為a表有數量,我本來打算手動select top n sum(num) a,只要接近500萬,就記錄n,然后insert into 分表 select b where p_id in(select top n sum(num) a).但是in的話,太慢了,而且幾千萬,分500萬一個表,我要手動操作十多次,有沒有什么方法可以簡單快捷地把表根據該字段自動分表了?
問題解答
回答1:看題主的描述感覺還沒到達需要分表的地步,mssqlserver性能不至于這么差吧?
建議貼出慢sql和表的ddl語句,分析一下慢的原因。
回答2:你可以試試用row_number
;WITH code(BatchID,ID)AS( SELECT 1,1 UNION ALL SELECT 1,2 UNION ALL SELECT 1,3 UNION ALL SELECT 1,4 UNION ALL SELECT 2,1 UNION ALL SELECT 2,2 UNION ALL SELECT 2,3 UNION ALL SELECT 2,4 )SELECT ROW_NUMBER()OVER(ORDER BY BatchID,ID) AS [LineNo] ,*FROM code AS c
LineNo BatchID ID-------------------- ----------- -----------1 1 12 1 23 1 34 1 45 1 56 2 17 2 28 2 39 2 4總體的數據可以根據LineNo來計算行數
相關文章:
1. angular.js - angularjs如何傳遞id給另一個視圖 根據id獲取json數據?2. java - HashSet<int> 為何有錯誤?3. mysql - 記得以前在哪里看過一個估算時間的網站4. 使用text-shadow可以給圖片加陰影嗎?5. docker start -a dockername 老是卡住,什么情況?6. nginx啟用gzip壓縮后,文件尺寸無變化.7. java - StringBuffer轉成String,可以不同過tostring,而是通過+“”的方式轉換嗎?8. 數據庫無法進入9. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?10.排行榜java - HashSet<int> 為何有錯誤? 1. 數據庫無法進入 2. mysql - 記得以前在哪里看過一個估算時間的網站 3. 4. docker start -a dockername 老是卡住,什么情況? 5. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦? 6. angular.js - angularjs如何傳遞id給另一個視圖 根據id獲取json數據? 7. 使用text-shadow可以給圖片加陰影嗎? 8. nginx啟用gzip壓縮后,文件尺寸無變化. 9. java - StringBuffer轉成String,可以不同過tostring,而是通過+“”的方式轉換嗎? 10. python - linux怎么在每天的凌晨2點執行一次這個log.py文件