要提升一個經常用的分頁串列界面回應速度(里面的資料是從幾張幾百萬的資料表關聯查詢出來,且暫時不方便用冗余表實作),查詢分頁串列資料到比較快(用了索引),但每次查詢串列用到的記錄總數非常慢。請教各位大神有無更好的方案
uj5u.com熱心網友回復:
查詢條數可以刪減那些沒有查詢條件的關聯表.如果還慢,那就減少關聯表,代碼中拼接邏輯,如果查詢條件落在關聯表上,盡量轉化成查主表的關聯的id上,減少模糊查詢,大多數模糊查詢意義不大.
就好比你想查詢客戶資料,但有個條件是根據專案名來模糊搜索,需要關聯到專案表,但實際上這個條件意義不大,專案名稱的模糊對業務有意義?先聯想出具體專案的id,再根據專案id查詢客戶,這樣你的條件就是落到客戶表上了.
uj5u.com熱心網友回復:
顯示記錄查詢的非常快,就是分頁的總記錄數查詢非常慢。針對總記錄數,查詢條件和索引優化的方式非常有限,又必須用到多表關聯(查詢條件原因)uj5u.com熱心網友回復:
聯合查詢并不一定要直接查表,你可以通過存盤程序把幾張表里的關鍵資料先取出來,比如你做的是一個統計查詢,你只需要把每張表用到的列group by+count出來到臨時表,最后再從幾張臨時表里select出你想要的結果,反正我是做過一個3張幾百萬的資料連接的統計圖,就是這樣做的uj5u.com熱心網友回復:
實時性要求不高的話,記錄總數做快取,然后定時刷快取,
分頁時只運行limit,記錄總數讀快取就不運行count(*),兩千萬資料,分頁100毫秒左右,親測!
uj5u.com熱心網友回復:
1、就像樓上說的,如果記錄總數實時性要求不高的情況下做快取,然后定時重繪2、如果記錄總數要求強一致的話,那就把需要統計條數的條件先分析分析,然后針對每種條件做一個欄位,每次往資料庫里面插入或者洗掉記錄的時候,根據條件修改對應的記錄數,這種情況適合更新少而查詢多的情況。如果更新非常頻繁則不適合。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/52224.html
標籤:Web 開發
上一篇:本人java二次開發海康威視攝像頭,在做Smart事件中的某一步驟時遇見問題,我知道要傳入的引數,但不知道如何定義這個引數
下一篇:求大佬救救孩子吧
