有一個號碼資源的管理需求,具體如下:
欄位 number(8位) state(占用 、空閑)
號碼資料集:180萬 ,全部是連續號碼,例如(44210000~46009999)
1. 求該號碼集千號段首號碼
描述:連續1000個state全為“空閑”的號碼集,輸出首號碼(如44250000~44250999 state全部為空閑,輸出44250000)
2. 求該號碼集百號段首號碼
描述:在非千號段里篩選,連續100個state全為“空閑”的號碼集,輸出首號碼(如44250000~44250099 state全部為空閑,輸出44250000)
3.求該號碼集整十號段首號碼
描述:在非百號段里篩選,連續10個state全為“空閑”的號碼集,輸出首號碼(如44250000~44250009 state全部為空閑,輸出44250000)
求各位大神幫忙看下有什么比較好解決的方案,本人按照邏輯寫了,性能很差
uj5u.com熱心網友回復:
以千號段為例方案一:
建議state:0空閑、1占用,狀態值加和為0篩選空閑段。
SELECT number,SUM(state) FROM table
GROUP BY SUBSTR(number,1,5)
HAVING SUM(state)=0
方案二:
先篩選所有空閑,然后分組count數量為1000的段。
SELECT number,count(number) FROM table
WHERE state='空閑'
GROUP BY SUBSTR(number,1,5)
HAVING count(number)=1000
百號段就GROUP BY SUBSTR(number,1,6)
uj5u.com熱心網友回復:
《如何協助 MySQL 實作 Oracle 高級分析函式 》這篇文章里有如何實作MySQL嵌套函式的辦法,性能還比較高uj5u.com熱心網友回復:
MySQL的嵌套函式實作起來是比較困難的,尤其是資料量大的時候,可以參考這篇文章的介紹:《如何協助 MySQL 實作 Oracle 高級分析函式》
uj5u.com熱心網友回復:
號段首號碼只考慮整千整百么轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/75174.html
標籤:MySQL
上一篇:mongodb演算法
