mysql大数据量分页显示的方法

数据库分表,一个表1000万数据,查询用户信息当偏移量很大的时候查询速度变慢,如下:

mysql> select * from user_answer_1 where uid=137807 order by aid desc limit 44000,10;

Connection id: 3015114479

Current database: ***

+--------+---------+--------+

| uid | aid | qid |

+--------+---------+--------+

| 137807 | 1867294 | 781928 |

| 137807 | 1867293 | 781927 |

| 137807 | 1853909 | 775468 |

| 137807 | 1853899 | 775456 |

| 137807 | 1853666 | 775339 |

| 137807 | 1853653 | 775333 |

| 137807 | 1848448 | 773202 |

| 137807 | 1848240 | 773119 |

| 137807 | 1847892 | 772957 |

| 137807 | 1847882 | 772953 |

+--------+---------+--------+

10 rows in set (26.78 sec)

换一个用户id(避免缓存)后再查询:

mysql> select * from user_answer_1 a, (select aid from user_answer_1 where uid=1907722 order

by aid desc limit 45000,10) b where a.aid=b.aid;

Connection id: 3015145120

Current database: ***

+---------+---------+---------+---------+

| uid | aid | qid | aid |

+---------+---------+---------+---------+

| 1907722 | 4262855 | 2198181 | 4262855 |

| 1907722 | 4262846 | 2198178 | 4262846 |

| 1907722 | 4262824 | 2198170 | 4262824 |

| 1907722 | 4262769 | 2198151 | 4262769 |

| 1907722 | 4262666 | 2198121 | 4262666 |

| 1907722 | 4262268 | 2198010 | 4262268 |

| 1907722 | 4262072 | 2197946 | 4262072 |

| 1907722 | 4261304 | 2197731 | 4261304 |

| 1907722 | 4261284 | 2197724 | 4261284 |

| 1907722 | 4261268 | 2197717 | 4261268 |

+---------+---------+---------+---------+

10 rows in set (0.80 sec)

希望能对大家有帮助。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: