關於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點跟你的業務場景有關了。