database design - storing rows order in mysql -
i need give ability change order of displaying rows script admin page.
there default order newly added rows (the go end of list) , admin should able change position of specific row.
i'm going act rows doubly linked list able re-position rows.
- is ok use linked list method saving display position of mysql rows?
- is there better method?
- should use separate table store orders or ok add 2
next
&prev
columns original table? - is possibe use mysql
order
statement method?
edit: thought of using spaced order codes (e.g. 0, 100, 200, ...) has limit may reached
i think you'll better off storing ordering position in dedicated field, instead of trying implement linked list.
the issue linked list is requires sort of list traversal "reconstruct" order before can display user. normally, you'd employ recursive query that, unfortunately mysql doesn't support recursive queries, you'll either need fiddle stored procedures, or end-up making database round-trip each , every list node.
all in all, updating order field of several rows time time (when need reorder) cheaper traversing list every time (when need display it), if move rows small distancees. , if introduce gaps (as mentioned), number of rows you'll need update fall dramatically, @ price of increased complexity.
you may able piggy-back order field onto clustering mechanism offered innodb.
ymmv, of course, i'd advise benchmarking simple order field approach on representative amounts of data before attempting implement more sophisticated...
Comments
Post a Comment