2013-01-21 21 views
0

我們數據庫中的很多表使用字段「display_order」來決定屏幕上記錄的順序。我們在這個領域使用int。在開始的時候,當我們插入記錄的時候,我們會在它們之間留下一些空白,例如,第一條記錄我們給出display_order = 0,第二條記錄display_order = 1000。這樣我們在第一條和第二條記錄之間有一定的差距。因此,如果我們想要在這兩者之間插入新記錄,我們可以給出display_order = 500.數據庫表中的智能顯示訂單

此方法有一個侷限性,即當您用完兩個相鄰記錄之間的間隔時,必須開始更新display_order爲了許多記錄才能做出一些差距。

我曾想過使用浮點或只是字符串,但不知道這會傷害比較性能。

您對您的體驗有何看法?

乾杯, 埃爾頓

+0

這是一個難題,因爲display_order(「tabbing order」)是候選關鍵字(的一部分)。在這裏看到我的答案:http://stackoverflow.com/a/14092775/905902 – wildplasser

+0

嗯,我認爲我的問題有點不同。我不在乎是否使用了所有的鍵。我只是不想做更新來彌補新紀錄。所以我想我正在尋找一個好方法,或者我的display_order字段的格式。 – eltonsky

回答

1

浮點不應該有任何性能影響,它是迄今爲止最簡單的解決方案:只使用周圍值的平均值。在病態情況下,你可以用盡分數,所以你需要確保平均值與兩個周圍值不同,如果結果相同,則需要重新編號。但這不應該經常發生。

+0

感謝rici。我認爲FP應該足夠好。 – eltonsky

0

約由2或3的顯示順序乘以什麼?這保留了原始順序並在物品之間引入了更多空間。將它作爲更新查詢運行也很容易。