什么是在mysql数据库中存储链表的最佳方法,这样插入很简单(即你不必每次都重新索引一堆东西),这样就可以很容易地按顺序拉出列表了.
使用Adrian的解决方案,但不是递增1,而是递增10或甚至100.然后插入可以计算在插入之间的差异的一半,而不必更新插入下面的所有内容.选择一个足够大的数字来处理平均插入次数 - 如果它太小,那么你将不得不回退到更新插入期间更高位置的所有行.
在表中存储一个名为"position"的整数列.为列表中的第一项记录0,为第二项记录1,等等.索引数据库中的该列,以及何时将值拉出,按该列排序.
alter table linked_list add column position integer not null default 0; alter table linked_list add index position_index (position); select * from linked_list order by position;
要在索引3处插入值,请修改第3行及以上的位置,然后插入:
update linked_list set position = position + 1 where position >= 3; insert into linked_list (my_value, position) values ("new value", 3);
创建一个包含两个自引用列PreviousID和NextID的表.如果该项是列表中的第一项,则PreviousID将为null,如果它是最后一项,则NextID将为null.SQL看起来像这样:
create table tblDummy { PKColumn int not null, PreviousID int null, DataColumn1 varchar(50) not null, DataColumn2 varchar(50) not null, DataColumn3 varchar(50) not null, DataColumn4 varchar(50) not null, DataColumn5 varchar(50) not null, DataColumn6 varchar(50) not null, DataColumn7 varchar(50) not null, NextID int null }