第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將大型數(shù)據(jù)集拆分成較小的部分以供 Web 查看

將大型數(shù)據(jù)集拆分成較小的部分以供 Web 查看

PHP
藍(lán)山帝景 2022-12-30 17:43:23
背景我正在為 Web 應(yīng)用程序開發(fā)一個(gè) Web 平臺(tái)。該平臺(tái)的關(guān)鍵功能之一是用戶管理。因此,我實(shí)現(xiàn)了一個(gè)登錄系統(tǒng),使注冊(cè)用戶能夠登錄平臺(tái)和應(yīng)用程序。這是使用包含登錄憑據(jù)、用戶標(biāo)識(shí)、聯(lián)系信息等的 MySQL 數(shù)據(jù)庫實(shí)現(xiàn)的...問題我遇到的問題是用戶表。該表可能會(huì)非常大。因此,如果管理員想要根據(jù)用戶在列表中的位置編輯特定用戶的信息,則管理員將不得不滾動(dòng)瀏覽可能有數(shù)千條記錄以找到正確的記錄。我正在尋找一種算法,它將把它分成大小約為 N 的組,并將這些組顯示為管理員可以單擊的范圍:#0-B、CF、GL、MR 等....研究這是我迄今為止進(jìn)行的研究:數(shù)據(jù)庫分區(qū) - PHP 或 MySQL 更好?1 張非常大的桌子還是 3 張大桌子?MySQL 性能關(guān)于分區(qū),我在網(wǎng)上找到了很多關(guān)于對(duì)數(shù)據(jù)庫表進(jìn)行分區(qū)的文章,但沒有任何內(nèi)容可以解決我正在嘗試做的事情。到目前為止我做了什么我編寫了一個(gè)從 Web 服務(wù)器離線運(yùn)行的程序,該程序返回每個(gè)存儲(chǔ)桶 0-9 和 AZ 的計(jì)數(shù)。對(duì)于小于閾值的計(jì)數(shù),它將桶組合成一個(gè)范圍并將其保存到數(shù)據(jù)庫中。因此,如果桶 0-9 和 A、B 的總數(shù)小于閾值,則范圍變?yōu)?0-B。如果桶的大小大于閾值,我在嘗試弄清楚如何從桶中獲取范圍時(shí)遇到問題。我考慮了以下解決方案:一個(gè)遞歸函數(shù),不斷向下鉆取用戶名,直到它在閾值范圍內(nèi)。如果我能讓它工作,這將是理想的。由于這是離線運(yùn)行的,我喜歡的另一個(gè)解決方案是將整個(gè)存儲(chǔ)桶加載到內(nèi)存中并從那里拆分。這樣做的缺點(diǎn)是潛在的內(nèi)存使用。我感興趣的另一個(gè)想法是 #2 的一個(gè)變體,它將桶的一部分加載到內(nèi)存中并對(duì)其進(jìn)行處理。這會(huì)將內(nèi)存使用量減少到或多或少的固定數(shù)量,但需要更多時(shí)間來處理。編輯 5-11/2020:基于一個(gè)答案和評(píng)論,我可以有一個(gè)搜索字段,當(dāng)條目數(shù)縮小到閾值以下時(shí),它會(huì)使用 JSON 填充列表(這是個(gè)好主意)。但是,我確實(shí)有我將與您分享的代碼:此代碼有效,但對(duì)于測試數(shù)據(jù),它在分區(qū)表中創(chuàng)建了約 17,500 個(gè)條目,并且有相當(dāng)多的條目計(jì)數(shù)為零。function part_recurse2($prefix){    global $CONFIGVAR;    global $charList;    global $charCount;    $list = dbCountScan($prefix);    for ($i = 0; $i < count($list); $i++)    {        $char = substr($charList, $i, 1);        if ($list[$i] >= $CONFIGVAR['user_partition_max_size']['value'])        {            part_recurse2($prefix . $char);        }        else        {            writeRange($prefix . $char, $prefix . $char, $list[$i],                substr($prefix . $char, 0, 1));        }    }}
查看完整描述

1 回答

?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

滾動(dòng)瀏覽可能有數(shù)千條記錄

編寫查詢,可能是臨時(shí)的,以過濾出更少的記錄。如果管理員需要滾動(dòng)瀏覽超過幾十條記錄,那么你(和數(shù)據(jù)庫)就讓他失望了。

分頁——不要使用OFFSET; “記住你離開的地方”:http: //mysql.rjweb.org/doc.php/pagination

分區(qū)——否;你還沒有提出一個(gè)它會(huì)受益的案例。你可以簡單地說WHERE name LIKE 'J%'or WHERE name >= 'P' AND name < 'T'(for p,q,r,s)INDEXname以;開頭 但我懷疑這是否真的對(duì)管理員有幫助。

“一個(gè)不斷向下鉆取的遞歸函數(shù)”——這就是 BTree 索引已經(jīng)為您做的事情。簡單地做WHERE name > $leftoff ORDER BY name LIMIT 20。即,LIMIT用于桶大??;同時(shí)不要打擾預(yù)定義桶邊界。

“潛在內(nèi)存使用”——讓數(shù)據(jù)庫擁有大部分可用內(nèi)存通常更好。

1 表 vs 3 -- 請(qǐng)?jiān)敿?xì)說明這些表中的內(nèi)容。

搜索中

正如其他人所說,使用某種搜索機(jī)制可能是找到所需記錄的最快方法。不要讓管理員滾動(dòng)瀏覽數(shù)千行。

提供一個(gè)表格,其中包含一項(xiàng)或多項(xiàng)內(nèi)容供管理員填寫

  • 完整的用戶名。(問題:拼寫錯(cuò)誤/不知道確切的拼寫)

  • 通配符部分名稱。例子:'段%'; 然后顯示所有以 Dan 開頭的用戶名。

  • 大量的超鏈接列表,每個(gè)用戶一個(gè)。最多可達(dá)幾千個(gè);我會(huì)建議不要這樣做。

  • 用戶的一個(gè)屬性——開始日期、無活動(dòng)等等。然后搜索該屬性。

對(duì)于這些部分情況,拒絕顯示超過100個(gè)用戶名;如果不止于此,請(qǐng)要求管理員提供更多詳細(xì)信息。不要為分頁增加的復(fù)雜性而煩惱。

我已經(jīng)實(shí)施了各種這些和其他機(jī)制?;叵肫饋?,我唯一一次對(duì)幾十個(gè)項(xiàng)目使用分頁是在我需要對(duì)所有項(xiàng)目采取行動(dòng)時(shí)。示例:從旅行中的一千張圖片中挑選一張放入“相冊(cè)”。這包括看每張照片足夠長的時(shí)間來挑選或拒絕每一張。此外,我使用 AJAX 來單擊一次所需的所有操作。



查看完整回答
反對(duì) 回復(fù) 2022-12-30
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)