Mysql 当没有ORDERBY子句时,首先返回哪个字段?

Mysql 当没有ORDERBY子句时,首先返回哪个字段?,mysql,Mysql,在MYSQL中,当没有ORDERBY子句时,首先返回哪些行 SELECT * FROM table; 查看phpmyadmin,它似乎首先将我的数据与最新数据排序,尽管我没有一个带有时间戳的字段。默认排序是什么?它基于隐藏字段吗 /希望这足够清楚 当没有ORDERBY子句时,任何SQL数据库中都没有定义返回行的顺序 但是,它通常是先写后返回的,原因很简单,因为这是将行写入磁盘的顺序,但这是不可靠的,因为: 数据库没有义务对行进行排序 早期行可能已被删除,早期磁盘页可能会被以后插入的行重用 数据

在MYSQL中,当没有ORDERBY子句时,首先返回哪些行

SELECT * FROM table;
查看phpmyadmin,它似乎首先将我的数据与最新数据排序,尽管我没有一个带有时间戳的字段。默认排序是什么?它基于隐藏字段吗

/希望这足够清楚


当没有ORDERBY子句时,任何SQL数据库中都没有定义返回行的顺序

但是,它通常是先写后返回的,原因很简单,因为这是将行写入磁盘的顺序,但这是不可靠的,因为:

  • 数据库没有义务对行进行排序
  • 早期行可能已被删除,早期磁盘页可能会被以后插入的行重用
  • 数据库引擎可能在内存中缓存了一些行,并决定首先返回这些行

  • 当没有ORDERBY子句时,任何SQL数据库中都没有定义返回行的顺序

    但是,它通常是先写后返回的,原因很简单,因为这是将行写入磁盘的顺序,但这是不可靠的,因为:

  • 数据库没有义务对行进行排序
  • 早期行可能已被删除,早期磁盘页可能会被以后插入的行重用
  • 数据库引擎可能在内存中缓存了一些行,并决定首先返回这些行

  • 当没有ORDERBY子句时,任何SQL数据库中都没有定义返回行的顺序

    但是,它通常是先写后返回的,原因很简单,因为这是将行写入磁盘的顺序,但这是不可靠的,因为:

  • 数据库没有义务对行进行排序
  • 早期行可能已被删除,早期磁盘页可能会被以后插入的行重用
  • 数据库引擎可能在内存中缓存了一些行,并决定首先返回这些行

  • 当没有ORDERBY子句时,任何SQL数据库中都没有定义返回行的顺序

    但是,它通常是先写后返回的,原因很简单,因为这是将行写入磁盘的顺序,但这是不可靠的,因为:

  • 数据库没有义务对行进行排序
  • 早期行可能已被删除,早期磁盘页可能会被以后插入的行重用
  • 数据库引擎可能在内存中缓存了一些行,并决定首先返回这些行

  • SQL本身不指定行返回的顺序,除非您有一个
    orderby
    子句,因此建议您不要依赖这种行为。如果没有排序子句,大多数DBMS几乎肯定会以最方便的顺序返回行

    如果您切换到另一个DBMS,它可能会改变。如果您切换到另一个版本的MySQL,它可能会改变。它可能会随着数据添加到数据库或从数据库中删除而更改

    它可能会根据是使用索引还是进行完整表扫描而改变。前一种情况可能会根据索引属性本身对其进行排序,因为这是它提取它的方式。后一种情况将按照行在主数据区域中占据的任何顺序进行“排序”(即,实际上未排序)


    如果DBMS开发人员是一个虐待狂类型,那么它甚至可能在一个月的任意时间发生变化,因为大多数人都是这样(向我在赫斯利的所有DB2开发人员朋友问好)。

    SQL本身不指定返回行的顺序,除非您有一个
    order by
    子句,因此,我们建议您不要依赖这种行为。如果没有排序子句,大多数DBMS几乎肯定会以最方便的顺序返回行

    如果您切换到另一个DBMS,它可能会改变。如果您切换到另一个版本的MySQL,它可能会改变。它可能会随着数据添加到数据库或从数据库中删除而更改

    它可能会根据是使用索引还是进行完整表扫描而改变。前一种情况可能会根据索引属性本身对其进行排序,因为这是它提取它的方式。后一种情况将按照行在主数据区域中占据的任何顺序进行“排序”(即,实际上未排序)


    如果DBMS开发人员是一个虐待狂类型,那么它甚至可能在一个月的任意时间发生变化,因为大多数人都是这样(向我在赫斯利的所有DB2开发人员朋友问好)。

    SQL本身不指定返回行的顺序,除非您有一个
    order by
    子句,因此,我们建议您不要依赖这种行为。如果没有排序子句,大多数DBMS几乎肯定会以最方便的顺序返回行

    如果您切换到另一个DBMS,它可能会改变。如果您切换到另一个版本的MySQL,它可能会改变。它可能会随着数据添加到数据库或从数据库中删除而更改

    它可能会根据是使用索引还是进行完整表扫描而改变。前一种情况可能会根据索引属性本身对其进行排序,因为这是它提取它的方式。后一种情况将按照行在主数据区域中占据的任何顺序进行“排序”(即,实际上未排序)


    如果DBMS开发人员是一个虐待狂类型,那么它甚至可能在一个月的任意时间发生变化,因为大多数人都是这样(向我在赫斯利的所有DB2开发人员朋友问好)。

    SQL本身不指定返回行的顺序,除非您有一个
    order by
    子句,因此,我们建议您不要依赖这种行为。如果没有排序子句,大多数DBMS几乎肯定会以最方便的顺序返回行

    如果您切换到另一个DBMS,它可能会改变。如果您切换到另一个版本的MySQL,它可能会改变。它可能会随着数据添加到数据库或从数据库中删除而更改

    它可能会根据是使用索引还是进行完整表扫描而改变。前一种情况可能会让我