Postgresql 在MySQL中使用“扫描表”是否正确;选择*。。“限制开始、计数”;没有订单条款?

Postgresql 在MySQL中使用“扫描表”是否正确;选择*。。“限制开始、计数”;没有订单条款?,postgresql,mysql,limit,Postgresql,Mysql,Limit,假设表X有100个元组 以下扫描X的方法会在MySQL中生成表X中的所有元组吗 for start in [0, 10, 20, ..., 90]: print results of "select * from X LIMIT start, 10;" 对于[0,10,20,…,90]中的开始: 打印“从X限制开始选择*的结果,10 我问这个问题,因为我一直在使用PostgreSQL,它清楚地说明了这种方法,但似乎没有关于这种方法的信息。如果不会,是否有一种方法可以在不知道表的任何其他信

假设表X有100个元组

以下扫描X的方法会在MySQL中生成表X中的所有元组吗

for start in [0, 10, 20, ..., 90]: print results of "select * from X LIMIT start, 10;" 对于[0,10,20,…,90]中的开始: 打印“从X限制开始选择*的结果,10 我问这个问题,因为我一直在使用PostgreSQL,它清楚地说明了这种方法,但似乎没有关于这种方法的信息。如果不会,是否有一种方法可以在不知道表的任何其他信息(如主键字段是什么)的情况下以固定顺序返回结果


我需要在应用程序中扫描表中的每个元组,并且我想要一种不使用应用程序中太多内存的方法(因此简单地执行“从X选择*是不可能的)。

不,这不是一个安全的假设。如果没有
orderby
子句,就无法保证您的查询每次都会返回唯一的结果。如果此表已正确索引,则添加一个
ORDER BY
(用于索引)应该不会太昂贵


编辑:非orderbyed结果有时会按照聚集索引的顺序排列,但我不会为此投入任何资金

不,这不是一个安全的假设。如果没有
orderby
子句,就无法保证您的查询每次都会返回唯一的结果。如果此表已正确索引,则添加一个
ORDER BY
(用于索引)应该不会太昂贵


编辑:非orderbyed结果有时会按照聚集索引的顺序排列,但我不会为此投入任何资金

如果使用Innodb或MyISAM表类型,更好的方法是使用处理程序接口。只有MySQL支持此功能,但它可以满足您的需要:

此外,MySQL API支持从服务器检索数据的两种模式:

  • 存储结果:在这种模式下,一旦执行查询,API就会在返回到用户代码之前检索整个结果集。这可能会消耗大量客户端内存缓冲结果,但会最大限度地减少服务器上资源的使用
  • 使用结果:在这种模式下,API逐行提取结果,并更频繁地将控制返回给用户代码。这样可以最大限度地减少客户机上内存的使用,但可以在服务器上保留更长时间的锁
  • 各种语言的大多数MySQL API都以某种形式支持这一点。它通常是一个参数,可以在创建连接时提供,和/或一个单独的调用,可以对现有连接使用,以将其切换到该模式

    因此,在回答你的问题时,我将做以下几点:

    set the connection to "use result" mode;
    select * from X
    

    如果使用Innodb或MyISAM表类型,更好的方法是使用处理程序接口。只有MySQL支持此功能,但它可以满足您的需要:

    此外,MySQL API支持从服务器检索数据的两种模式:

  • 存储结果:在这种模式下,一旦执行查询,API就会在返回到用户代码之前检索整个结果集。这可能会消耗大量客户端内存缓冲结果,但会最大限度地减少服务器上资源的使用
  • 使用结果:在这种模式下,API逐行提取结果,并更频繁地将控制返回给用户代码。这样可以最大限度地减少客户机上内存的使用,但可以在服务器上保留更长时间的锁
  • 各种语言的大多数MySQL API都以某种形式支持这一点。它通常是一个参数,可以在创建连接时提供,和/或一个单独的调用,可以对现有连接使用,以将其切换到该模式

    因此,在回答你的问题时,我将做以下几点:

    set the connection to "use result" mode;
    select * from X
    

    哇!使用结果正是医生为我的应用程序订购的。谢谢你的回答!哇!使用结果正是医生为我的应用程序订购的。谢谢你的回答!如果在循环过程中插入行,则无任何保证它不会中断订单,即使使用
    order BY
    子句,除非在事务安全连接中。如果在循环过程中插入行,则无任何保证它不会中断订单,即使使用
    order BY
    子句,除非在事务安全连接中。