首頁  >  文章  >  後端開發  >  大量多層次分類資料的取得、快取、搜尋查詢 怎麼設計最快 ?

大量多層次分類資料的取得、快取、搜尋查詢 怎麼設計最快 ?

WBOY
WBOY原創
2016-12-01 00:56:491257瀏覽

1.資料量大
2.多級分類
3.首先要取得所有資料
4.取得到所有資料後有搜尋功能(搜尋到的資料不管幾級都要取得到它的所有父級和子級存在和搜尋名稱相符合的標為紅色)

現在我為了開始獲取全部數據和後期搜索都用一個方法我就獲取到所有分類id和其父級子集放在一起然後比如現在不是搜索開始是全部數據肯定很多重複的我去重然後通過這些id去獲取所有資訊最後再循環改變搜尋相符的字體顏色(和搜尋公用) 最後再循環組合成樹狀結構資料

因為數據量大的話 老循環我覺得可能會慢

怎麼優化下 搜尋和初始化所有資料分開寫兩個方法 還是能怎麼弄呢?

還有就是我加了快取這樣每次初始化就不用去從新查了直接拿緩存但是搜尋的話還是要去查當然搜尋可能資料量小還好好但是循環次數過多啊快取有辦法進行二次篩選嗎? thinkphp框架的S方法快取的
感謝分享

回覆內容:

1.資料量大
2.多級分類
3.首先要取得所有資料
4.取得到所有資料後有搜尋功能(搜尋到的資料不管幾級都要取得到它的所有父級和子級存在和搜尋名稱相符合的標為紅色)

現在我為了開始獲取全部數據和後期搜索都用一個方法我就獲取到所有分類id和其父級子集放在一起然後比如現在不是搜索開始是全部數據肯定很多重複的我去重然後通過這些id去獲取所有資訊最後再循環改變搜尋相符的字體顏色(和搜尋公用) 最後再循環組合成樹狀結構資料

因為數據量大的話 老循環我覺得可能會慢

怎麼優化下 搜尋和初始化所有資料分開寫兩個方法 還是能怎麼弄呢?

還有就是我加了快取這樣每次初始化就不用去從新查了直接拿緩存但是搜尋的話還是要去查當然搜尋可能資料量小還好好但是循環次數過多啊快取有辦法進行二次篩選嗎? thinkphp框架的S方法快取的
感謝分享

  1. 不要感覺, 循環大多數情況下, 相對於數據庫查詢來說是快了幾個數量級的, 除非你用循環去查數據庫了

  2. 大多數情況下, select ... in並且命中主鍵或者索引的, 結果集在只是幾百個以內的, 效率還是可以接受的, 你可以結合你的實際情況運用

  3. 真的資料量大, 篩選條件又多, 又有分詞搜尋的情況下請考慮上搜尋引擎, ElasticSearch, Sphinx等等

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn