数据库分表,一个表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)
希望能对大家有帮助。
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-