程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 關於limit在後面為什麼會慢的問題

關於limit在後面為什麼會慢的問題

編輯:MySQL綜合教程

關於limit在後面為什麼會慢的問題   大家都用過mysql分頁,實現一般是select * from talbe_name limit pageSize*(pageNo-1),pageSize 這條語句前面幾頁很快,為什麼會隨著pageNo增大而導致變慢呢?    www.2cto.com   原理是因為limit分頁它會把pageSize*(pageNo-1)以前的記錄也標記出來。這句話說得可能不是很容易理解。舉個簡單的例子,郵局的信件可能按地區分放在不同的架上子,這就相當於數據庫的索引,你能很容易的找到哪些信件是西湖區的,並且每個架子上的信按收信時間排好序的。但是現在有個需求是要你找到西湖區裡面信件在15號到20號的第10封到15封。   你的做法我想應該首先找到西湖區所有的架子,這個很快你就能定位的,然後現在你怎麼定位15號呢,如果架上有標記號數[時間索引]你也可以很輕松的找到。但是接下來呢?你怎麼定位第10封呢,你會從15號開始找,看第一封是15號的,是第一個符號條件但是不是要我找的,恩,記下數,2,3,4,5,6,直到10,現在是我需要的了,拿出來,一直拿到第15封。問題就在這裡,如果我要是需要找出第10000封至10010封呢,你得把前面都找一遍。所以到後面就會很慢了。   那要怎麼解決呢,只要讓前面的無用功少做一點兒就可以了。比如把上面的條件換成我要找18號12點到18號13點的不就少做很多無用功了嗎?當然怎麼把:找出第10000封至10010封這個需求轉成找18號12點到18號13點跟你的業務場景有關了。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved