mysql - 怎么能快速地分表
問題描述
在sqlserver中現(xiàn)在在有一個(gè)批次碼表a,一個(gè)具體的碼表bb表里面有幾千萬條數(shù)據(jù),查的時(shí)候太慢,現(xiàn)在要將碼表分表,每個(gè)表最好不超過500萬,但是同一個(gè)一個(gè)批次的碼,要放在同一個(gè)表上。.因?yàn)閍表有數(shù)量,我本來打算手動(dòng)select top n sum(num) a,只要接近500萬,就記錄n,然后insert into 分表 select b where p_id in(select top n sum(num) a).但是in的話,太慢了,而且?guī)浊f,分500萬一個(gè)表,我要手動(dòng)操作十多次,有沒有什么方法可以簡單快捷地把表根據(jù)該字段自動(dòng)分表了?
問題解答
回答1:看題主的描述感覺還沒到達(dá)需要分表的地步,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總體的數(shù)據(jù)可以根據(jù)LineNo來計(jì)算行數(shù)
相關(guān)文章:
1. docker-machine添加一個(gè)已有的docker主機(jī)問題2. javascript - 關(guān)于圣杯布局的一點(diǎn)疑惑3. 關(guān)于docker下的nginx壓力測試4. php - mysql 模糊搜索問題5. mysql - 在下剛?cè)腴Tsql 關(guān)于sql的語法詢問6. 數(shù)組 - mysql 輸出到 php array 然後印出?7. 我和老師的代碼對(duì)照了幾遍沒發(fā)現(xiàn)問題,但是瀏覽器打開就有問題了,求解8. MySQL視圖count速度優(yōu)化9. php新手疑問 利用自定義函數(shù)進(jìn)行加減乘除10. 異步 - python一些內(nèi)置的函數(shù)是阻塞還是非阻塞?
