Mysql改ページ技術まとめ



Mysql Pagination
 
1.cursor方式でデータの改ページを行います.
http://timyang.net/web/pagination/
大きな結果セットのデータに対して、cursor方式を使用する目的は、主に性能を大幅に向上させることである.それともMySQLを例にとって説明します.たとえば、ページを100,000までめくる時は、cursorを使わず、対応するSQLは
select * from msgs limit 100000, 100

100000+100件のデータを調べて、100000条を捨てて、100条を保留します.
百万レコードの表で、このSQLを初めて実行するには5秒以上が必要です.テーブルのキーの値をcursor_とすると仮定します.idは、cursorのページ分けで対応するSQLを使用して最適化できます.
select * from msgs where id > cursor_id limit 100;

同じ表では通常100 ms以下であれば、何十倍も効率が向上します.
 
limit M、Nを使ってはいけません.
但し、limit Nを使用して、それ以外のclue(手がかり、条件)を使用して、Mからの機能を実現することができます.
 
2.何人かのYahoo!エンジニアのmysqlページ技術のまとめ:なかなかいいです.
http://www.percona.com/ppc2009/PPC2009_mysqlpagination.pdf
 
http://www.fuchaoqun.com/2009/04/efficient-pagination-using-mysql/