在一個寵物項目上,我開始使用UUID。 該應用程序非常簡單,它使用binary(16)
主鍵在MySQL數據庫中添加數據。如何使用UUID維護廣告訂單
生成PK的我用JUG這樣:
UUID uuid = Generators.timeBasedGenerator().generate();
然後我將其轉換爲一個字節數組:
byte[] b = UUIDUtil.asByteArray(uuid);
現在的問題是,我沒有關於我的行的插入順序的想法。 如果我在我行由ID最近的一些行來之前舊的行進行排序(按照DATETIME
場)
我應該怎麼做才能夠保持我行的插入順序(排序目的)?
問題的解釋,UUID被排序ASC,我期待created_at是在相同的順序。
select hex(id), created_at from myTable order by id
+----------------------------------+---------------------+
| hex(id) | created_at |
+----------------------------------+---------------------+
| 0913FF1FC53911E39D8D6F7C246EE143 | 2014-04-16 09:30:50 |
| 09378CB1C53911E39D8DD94CAEA8D23F | 2014-04-16 09:30:50 |
| 094A9F83C53911E39D8DDF087D0ED31A | 2014-04-16 09:30:51 |
| 0CBE40D5C0B711E38172B9CB0C485EE3 | 2014-04-10 15:50:17 |
| 0CBF5247C0B711E3817277CAF5E1D5B5 | 2014-04-10 15:50:17 |
| 0CC03CA9C0B711E381721BA12057F9E2 | 2014-04-10 15:50:17 |
| 0CC14E1BC0B711E381720505D5FFDCD3 | 2014-04-10 15:50:17 |
| 0CC2387DC0B711E38172F9A6B29EB613 | 2014-04-10 15:50:17 |
| 0CC349EFC0B711E381723D1DB8515E3F | 2014-04-10 15:50:17 |
| 0CC43451C0B711E3817257D8AFFD09B8 | 2014-04-10 15:50:17 |
| 0CC545C3C0B711E381729B3CB87CD707 | 2014-04-10 15:50:17 |
| 0CC8C835C0B711E38172CDA11992F9BC | 2014-04-10 15:50:17 |
| 0E33A6B5C08B11E396829782BD5365D2 | 2014-04-10 10:35:22 |
| 0E368CE7C08B11E39682A9F63D5EF0E6 | 2014-04-10 10:35:22 |
| 0E383A99C08B11E396825D6048BFC696 | 2014-04-10 10:35:22 |
| 128DD6C5C53911E39D8D7577DB523A2C | 2014-04-16 09:31:06 |
+----------------------------------+---------------------+
編輯
只是爲了澄清,我當然知道我喜歡並習慣auto_increment
PK的,我只是想看看它是如何是可以實現的,沒有他們的工作。 (如果它是!)
爲什麼不只是'整數auto_increment'字段,並將其用於默認排序? –
爲了研究目的,我想完全免費的數據庫生成的值(所以沒有'auto_increment') –
你不能只用'created_at'排序嗎? – axtavt