在我的MySQL數據庫中,我有一個表(人)有超過1000萬行,這兩個重要的欄目有:使用百分比選擇獲得行數的最快方法(限制X,1)?
- ID
- 點
我想知道的排名身份證號碼= randomid
我想返回到他的「等級」,這取決於他的觀點。 但他的排名不會是確切的行號,但更像是一個百分比層。就像:「你處於前5%」或「你處於10%-15%的層次」。
當然,我可以查詢表並通過將行號除以行總數將行號轉換爲圖層%。但我的問題是,它會更快(10M +行),只需用LIMIT X,1獲取多行,其中X將成爲表中百分比爲100,95,90,85的一行。下一步:檢查這一行的點數是否低於當前點數,如果是,抓取下一層%行,如果沒有,則返回上一層數據行。
在人表中有9列2個bigint,4個varchars 150,1個日期和2個布爾值。
當然,我寧願得到確切的排名,但從我測試的結果來看,這很慢,至少需要幾秒鐘,而我的wat可以在幾百秒內完成。
另外,我提出的方式在多個圖層具有相同的點時並不精確,但它不需要精確,所以我們可以忽略這一事實。
額外的信息,我在PHP程序,所以如果在PHP + MySQL中有一個特定的解決方案,這將是很好。
最後,值得一提的是,表格每小時增長20k行(每天近500k行)。
感謝您閱讀本文,我感謝所有幫助。 Kevin
這似乎是關於mysql和百分位的問題。我對嗎? – Strawberry
是的,我是指百分位數。 :) –