天天看點

mysql關聯分頁優化_mysql大量資料分頁查詢優化-延遲關聯

所有的php初學者都應該知道,mysql的分頁語句寫法如下:

而當這語句分頁到一定程度時,例如1000頁,每頁20條

會發現分頁之後查詢的會越來越慢

原因是因為limit a,b 的取資料方式是,先取出a+b條資料,再把a條篩選掉,剩b條,相當于一次性要取a+b條的資料,而a條其實是無用的

解決方案如下

一:php代碼解決

例如我們先查詢出第一頁的資料:

保留最後一個的id,當需要取第2頁資料時,則

這樣資料庫就會每次都能走索引,然後隻查出20條

缺點:不能從第一頁跳轉到第n頁

缺點解決方案:前100頁,不做優化,當到101頁時采用該優化方案,并且不讓使用者從101頁進行頁面跳轉到1xx頁

二:mysql解決

使用該方法,會先從索引表取出索引id,然後進行using索引覆寫方法,因為先查詢的是索引,然後才從索引裡關聯取出20條記錄,大大的提升了查詢速度

執行個體圖:

mysql關聯分頁優化_mysql大量資料分頁查詢優化-延遲關聯

普通方法查詢,0.123秒

上一頁最後一個的id為20000,則

mysql關聯分頁優化_mysql大量資料分頁查詢優化-延遲關聯

 php方法查詢,0.070秒

mysql關聯分頁優化_mysql大量資料分頁查詢優化-延遲關聯

mysql索引覆寫查詢,0.089秒

本文為仙士可原創文章,轉載無需和我聯系,但請注明來自仙士可部落格www.php20.cn