题
它的那些事情,似乎有一个奇怪的曲线在哪里我更想想看,它更有意义。到一定程度的课程。然后它没意识到我所有。
照顾到启发我吗?
解决方案
因为在大多数情况下,你已经有了结果进行排序第一个。例如,当谷歌上搜索, 你只能看到100页的结果.他们不要打扰排序的网页等级超过1000个网站,用于特定关键字(或组合的关键词)。
页码是快。排序是缓慢的。
其他提示
Lubos 是正确的,问题不是事实,你的寻呼(这需要大量的数据,断讯),但是,你需要弄清楚实际上是会在网页上..
事实上,你需要页面意味着有很多的数据。很多的数据需要很长时间排序)
这是一个非常模糊的问题。我们需要一个具体的例子,获得一个更好的想法的问题。
这个问题似乎相当复盖的,但我会加点东西MySQL具体作为它吸引了很多人:
避免使用 SQL_CALC_FOUND_ROWS
.除非该数据集是微不足道,计匹配和检索x量相匹配,在两个独立的查询将是一个有很多更快。(如果它 是 微不足道,你会几乎没有注意到有差别的方式。)
我以为你的意思 页数的印刷页 -那是我把我的牙齿。我要进入一个伟大的独白关于收集的所有内容的网页,定位(一个庞大的数量的规则在这里,constrait引擎是很有帮助)和理由...但显然你是在谈论过程的组织信息的网页。
对,我猜数据库。磁盘的访问是缓慢的。一旦你得到了它在记忆,分类是便宜。
当然排序上的一个随机查询需要一些时间,但是如果你有问题与同一分页的查询正在使用定期,没有任一些错误的数据库安装(不正确地编制索引/没有在所有,也很少存储器等。我不是一个数据库管理者)或者你正在做的分页的严重错误的:
可怕的错误:例如做 select * from hugetable where somecondition;
进入一系列得到的页数与阵列。长挑选相关指标和dicard阵列-然后重复这种对每一页...这就是我所说的严重错误的。
更好的解决方案的两个问题:一个得到的只是最后的另一个取得结果的使用 limit
和 offset
.(某些专有的标准sql服务器可能有一个一个的查询的选择,我不知道)
坏的解决办法可能实际工作相当好在关于小表(实际上它不是不可想象的,它的速度在非常小的表,因为开销的两个查询比让的所有行在一个查询。我不是说这 是 所以...)但是,一旦该数据库开始增长的问题变得显而易见的。