二維表n m轉一維表n 1

2021-08-09 13:34:38 字數 659 閱讀 4775

在工作中遇到這樣乙個問題:我要存貯玩家以及他們所關注的boss到公共表,現在公共錶行數受限,一般會保持在1024行以下,而現在的情況是乙個服承載800人,boss數量在40個左右,乙個人關注的boss無上限,那麼極限情況下要存下這些資料需要800*40=32000行,很明顯這樣儲存無法達到要求。

我想了以下幾種方案

1. 列1: playerid ,列2:boss1,boss2.... 這樣可以解決行的問題,但是增加和取消關注都將面臨字串查詢和解析等問題,且效率低下,字段長度也成問題。

2.列1:bossid ,  列2:player1,player2... 問題同1

3.分表法,即乙個boss一張表,這樣基本可以滿足需求,唯一的缺點就是表太多

最後在回家的路上想到了乙個比較完美的解決方案,那就是位操作。

4.列1:playerid  列2:64位整數。 乙個boss占用一位,那麼就可以記錄64個boss。

關注boss使用『|』操作cur=cur | target。

取消關注 cur = cur & (~target)

此方法只在擴充套件boss數量上存在問題,但是基本解決了工作需求。如果boss數量較多可以採用多段的方式,即再增加一列擴充套件64個boss。

這種方式將n*m結構轉換成了n*1的結構,對於同類問題都可使用該方法處理。

一維表轉二維表(mysql)

例子資料 drop table ifexists tmp0103.temp test create table tmp0103.temp test id int 11 not null auto increment,class varchar 255 default null,score doubl...

N1 二維陣列查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。notes 1 二維陣列初始化 int b 2 行數 int ilen b.length 列數 int jle...

一維表轉換成二維表

晚上回到宿舍,舍友問起我今天他們筆試的乙個題目 如何把乙個一維表轉換成二維表 sql查詢該如何寫呢?一維表table a如下 年級 課目 人數 2001 語文 20 2001 數學 15 2002 語文 20 2002 數學 15 2003 語文 20 2003 數學 15 如何轉換成如下格式的二維...