如何返回按插入顺序的数据(50分)

  • 主题发起人 主题发起人 LSS
  • 开始时间 开始时间
L

LSS

Unregistered / Unconfirmed
GUEST, unregistred user!
我用insert into向数据库插入记录,为何插入的记录不是按插入先后存放的
我也找不到规律,而且用SELECT返回时,最后插入和记录并不一定在最后一条
 
定义主键了吗?
 
呵呵, 只有文件型数据库有记录顺序问题, 大型数据库都是最后更新/添加的在后面.
如果定义主键, 会根据主键顺序显示.
 
只有顺序索引型数据库(ISAM),比如dbase,foxbase系列,才有"插入"纪录的概念.
关系型数据库(Access等)无此概念.
 
在DELPHI中可用APPEND,它增加的记录一定是按次序排列的,
如果直接用SQL语句,则先把query或table Last一下,再执行insert
 
小天:这样做毫无意义,最好还是开导他放弃这个想法,这样才能彻底摆脱foxpro系列
的东西. :-)
 
哦,对,别用记录号这个概念,
多用用query写写SQL语句,好快好快的
 
cAkk:LSS可是不用foxpro的。
 
我用的是SQL SERVER7.0设主键和没设主键都有此现象,我都是用
Insert into table values (...)插入的
 
很正常. 可能它是按访问频度来安排具体数据的存放位置的. 所以query时
没有排序的话返回顺序没有规律.
 
变通的方法:建立个identify的key,返回时按此KEY排序
select * from yourdb orderby identifykey
 

TO Another_eYes 请问“访问频度”是什么意思,我发现数据在保存时就不规则
存放,一但存放,其位置就不再发生变化,这与查询数据无关(因为还没有查询
数据),所以不存在频度问题。
是否是数据库按自己的规则存放数据,以利于访问速度和空间存贮,如果是这样
的话,只有增加新字段了,真的没有其它办法了吗???
 
关系型数据库的数据存放物理位置与添加顺序毫无规律,不要自寻烦恼了.
 
知道novell的方法吗? 读写盘时判断磁头位置, 取磁头移动最短距离保存数据.
我想ms sql server这类大型关系型数据库都有类似的存贮优化功能的. 所以
你无法得知数据存放的物理规律.
 
同意cAkk的说法,关系型数据库的数据存放物理位置与添加顺序毫无规律
 
Another_eYes说法有问题,在数据库插入数据时
数据还没使用过,又怎么知道它的访问频度呢?
访问频度只是用在优化查询而已。
cAkk说的没错,RDBMS的数据存放物理位置与添
加顺序无关,而且从业务逻辑看你也应该只根据
业务需要来使用SQL语句,而不能从操作上来操纵
数据。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部