[點(diǎn)晴永久免費(fèi)OA]SQL標(biāo)簽記錄法和延遲關(guān)聯(lián)法解決過(guò)深分頁(yè)問(wèn)題
我們可以通過(guò)減少回表次數(shù)來(lái)優(yōu)化。一般有標(biāo)簽記錄法和延遲關(guān)聯(lián)法。 標(biāo)簽記錄法 就是標(biāo)記一下上次查詢到哪一條了,下次再來(lái)查的時(shí)候,從該條開(kāi)始往下掃描。就好像看書一樣,上次看到哪里了,你就折疊一下或者夾個(gè)書簽,下次來(lái)看的時(shí)候,直接就翻到啦。 假設(shè)上一次記錄到100000,則SQL可以修改為: select id,name,balance from account where id > 100000 limit 10; 這樣的話,后面無(wú)論翻多少頁(yè),性能都會(huì)不錯(cuò)的,因?yàn)槊辛?code>id索引。但是這種方式有局限性:需要一種類似連續(xù)自增的字段。 延遲關(guān)聯(lián)法 延遲關(guān)聯(lián)法,就是把條件轉(zhuǎn)移到主鍵索引樹(shù),然后減少回表。 假設(shè)原生SQL是這樣的的,其中 select id,name,balance from account where create_time> '2020-09-19' limit 100000,10; 使用延遲關(guān)聯(lián)法優(yōu)化,如下: select acct1.id,acct1.name,acct1.balance from account acct1 INNER JOIN (select a.id from account a where a.create_time > '2020-09-19' limit 100000, 10) AS acct2 on acct1.id= acct2.id; 優(yōu)化思路就是,先通過(guò) 該文章在 2023/6/28 16:02:23 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |