所有的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條記錄,大大的提升了查詢速度
執行個體圖:
普通方法查詢,0.123秒
上一頁最後一個的id為20000,則
php方法查詢,0.070秒
mysql索引覆寫查詢,0.089秒
本文為仙士可原創文章,轉載無需和我聯系,但請注明來自仙士可部落格www.php20.cn