禁用主/唯一键排序

时间:2016-08-03 23:59:06

标签: php mysql

我注意到mysql使用主键或唯一键重新排序行并以这种方式存储它们。我可以禁用此订购吗?

 id (prim)  │ column1 │ column2
────────────┼─────────┼──────────
            │         │          

如果我将下面的数组插入上面的表格

$rows = [
    ["8", "a", "a"],
    ["4", "b", "b"],
    ["3", "c", "c"],
    ["5", "d", "d"],
];

我得到以下

 id (prim)  │ column1 │ column2
────────────┼─────────┼──────────
  3         │ c       │ c         
  4         │ b       │ b         
  5         │ d       │ d         
  8         │ a       │ a          

我认为使用unique而不是primary会有所帮助,但它并没有。我仍然得到有序的行。是不是有办法保持行和#39;按插入顺序的原始订单?

在拥有主键或唯一键时,行应按其插入顺序存储。

 id (prim)  │ column1 │ column2
────────────┼─────────┼──────────
  8         │ a       │ a            
  4         │ b       │ b      
  3         │ c       │ c          
  5         │ d       │ d         

如果我不使用主键或唯一键,我会得到所需的结果。

此表和数组仅用于演示。在实际表中,我不使用自动增量或任何序列号/字符串作为主键。每行都有一个唯一的随机标识符,例如9Z4CQtVd8Z。对它们进行排序没有任何目的/好处。我希望按插入顺序保留行。

1 个答案:

答案 0 :(得分:0)

存储数据的顺序根本没有任何意义。并且mysql和其他数据库不保证它将以主键顺序存储数据。在检索数据时需要使用ORDER BY子句。





如果插入一组数据并在没有特定顺序的情况下检索它们,则很可能是将按您插入的顺序返回。但是,如果在此之后删除几行,然后再插入几个,则默认顺序将更改。