mysql - 怎么能快速地分表
問(wèn)題描述
在sqlserver中現(xiàn)在在有一個(gè)批次碼表a,一個(gè)具體的碼表bb表里面有幾千萬(wàn)條數(shù)據(jù),查的時(shí)候太慢,現(xiàn)在要將碼表分表,每個(gè)表最好不超過(guò)500萬(wàn),但是同一個(gè)一個(gè)批次的碼,要放在同一個(gè)表上。.因?yàn)閍表有數(shù)量,我本來(lái)打算手動(dòng)select top n sum(num) a,只要接近500萬(wàn),就記錄n,然后insert into 分表 select b where p_id in(select top n sum(num) a).但是in的話,太慢了,而且?guī)浊f(wàn),分500萬(wàn)一個(gè)表,我要手動(dòng)操作十多次,有沒(méi)有什么方法可以簡(jiǎn)單快捷地把表根據(jù)該字段自動(dòng)分表了?
問(wèn)題解答
回答1:看題主的描述感覺(jué)還沒(méi)到達(dá)需要分表的地步,mssqlserver性能不至于這么差吧?
建議貼出慢sql和表的ddl語(yǔ)句,分析一下慢的原因。
回答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來(lái)計(jì)算行數(shù)
相關(guān)文章:
1. 數(shù)組按鍵值封裝!2. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問(wèn)題3. docker不顯示端口映射呢?4. python - flask _sqlalchemy 能否用中文作為索引條件5. java - 阿里的開(kāi)發(fā)手冊(cè)中為什么禁用map來(lái)作為查詢的接受類?6. python3.x - git bash如何運(yùn)行.bat文件?7. javascript - ES6規(guī)范下 repeat 函數(shù)報(bào)錯(cuò) Invalid count value8. html5 - 使用echarts中的圖表 一個(gè)頁(yè)面導(dǎo)入了好幾個(gè)js圖表 實(shí)現(xiàn)echarts圖表隨著瀏覽器窗口變化而變化時(shí)出現(xiàn)了問(wèn)題9. javascript - webpack中alias配置中的“@”是什么意思?10. javascript - 為什么創(chuàng)建多行多列的表格最后只有一行內(nèi)有表格
