【发布时间】:2018-11-23 14:11:27
【问题描述】:
这是适用于 MySQL、Oracle DB 或其他任何可能存在的一般问题。
我知道 MySQL 有 LIMIT offset,size;对于 Oracle,有 'ROW_NUMBER' 或类似的东西。
但是当这样的“分页”查询被背靠背调用时,数据库引擎实际上是否会重新执行整个“选择”,然后每次都检索不同的结果子集?还是它只对结果进行一次整体获取,将结果保存在内存中或其他东西中,然后根据偏移量和大小为后续查询提供结果子集?
如果它每次都进行完整的提取,那么它似乎效率很低。
如果它只完整获取一次,它必须以某种方式将查询“存储”在某个地方,以便下次查询进入时,它知道它已经获取了所有数据,只需要从中提取下一页它。 在那种情况下,数据库引擎将如何处理多个线程?两个线程执行同一个查询?
我很困惑:(
【问题讨论】:
标签: mysql database oracle pagination paging