mysql單表千萬分頁優(yōu)化 為什么MySQL在數(shù)據(jù)庫較大的時候分頁查詢很慢,如何優(yōu)化?
為什么MySQL在數(shù)據(jù)庫較大的時候分頁查詢很慢,如何優(yōu)化?正如房東所說,分頁查詢在我們的實際應(yīng)用中非常常見,也是問題最多的查詢場景。例如,對于下面的簡單語句,通常的思考方式是在name、age、reg
為什么MySQL在數(shù)據(jù)庫較大的時候分頁查詢很慢,如何優(yōu)化?
正如房東所說,分頁查詢在我們的實際應(yīng)用中非常常見,也是問題最多的查詢場景。例如,對于下面的簡單語句,通常的思考方式是在name、age、register中u在time字段上創(chuàng)建一個復(fù)合索引。這樣,條件排序可以有效地利用索引,性能得到快速提高。
如上例所示,當(dāng)limit子句變?yōu)椤發(fā)imit 100000,50”時,我們會發(fā)現(xiàn),如果只選擇了50條語句,為什么會變慢?
,所以我們會覺得很慢。
通常,當(dāng)我們進(jìn)行分頁查詢時,我們可以在上一頁中獲得一個數(shù)據(jù)標(biāo)志,以縮小查詢范圍,例如時間。我們可以將上一頁的最長時間作為查詢條件的一部分。SQL可以優(yōu)化如下:
mysql如何多表聯(lián)合查詢并分頁?
選擇T1。姓名,T2。姓名,T3。Name
來自表1 T1,表2 T2,表3,T3
其中T1。Id=T2。ID和T1。Id=T3。ID
限制1,3
就是這個樣子。最好寫MySQL的分頁
1。如果只是分頁,可以考慮這種子表,即表的ID是range,ID是continuous。例如,第一個表的ID是10000到100000,第二個表的ID是100000到200000。這種分頁應(yīng)該沒有問題。2對于其他表拆分方法,建議先使用Sphinx建立索引,然后查詢分頁。這就是我們公司現(xiàn)在的工作