约有1千万条记录。 分页系统需要查询。如何加快分页所需的MySQL查询 - 表中的百万条记录
查询看起来是这样的:
SELECT field1, field2, field3 FROM table
WHERE field4 = '$value'
ORDER BY field5 ASC limit $offset, 30;
有关于字段4和字段5索引。
所有字段都是varchar类型。 Field5被测试为int,但没有真正的改进通知。
现在用limit 0, 30
查询需要大约1秒,但用limit 119970, 30
查询需要大约20秒。
这对于在分页页面上获得小于0.1秒的结果是否现实?网站需要这样的加载时间才能提供良好的用户体验。
详解(与limit 0,30
选择)
id: 1
select_type: SIMPLE
table: table
type: index
possible_keys: NULL
key: field5
key_len: 768
ref: NULL
rows: 223636
Extra: Using where
'$ value'多久改变一次?你能缓存查询的结果吗?你真的希望用户获得第12万个结果吗? – 2011-04-20 01:19:46
显示表模式并解释查询。 – zerkms 2011-04-20 01:19:50
@Mark艾略特值多次改变有大约2000个不同的值。有很多类似的查询,所以MySQL缓存是有限的,并且希望第一次加载也很快。是的,我希望用户可以分页,因为甚至有链接到最后的分页页面,机器人将扫描所有网站。现在甚至第一页加载5秒。 – Newbie1 2011-04-20 01:27:57