MyBatis(七) 記一次mybatis分頁查詢10條,但是依舊很緩慢解決

情形:

    在一次調試中,發現了一個bug,就是有三個大數據量的表進行關聯查詢後分頁,一個表60萬,一個表40萬,一個表20萬,發現前端50頁查詢速度很快,但是當查詢到5000頁的時候,特別慢,需要兩分鐘。

素材:

  • 語言:java
  • sql框架:mybatis
  • 數據庫:sql server

sql分頁語句:

offset #{offset} row fetch next #{pageSize} row only

解決:

  • 將#{offset}和#{page}換成
offset 49900 row fetch next 10 row only
  • 測試,發現執行速度很快,大約需要20ms,果斷替換爲
offset ${offset} row fetch next ${pageSize} row only

注意:爲了防止sql注入,需要其進行嚴格的校驗

原因

猜測是mybatis對於sql自主的優化出現的問題,可能是一個不好的優化,並未去看源碼,等待有時間再研究。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章