-2

当我使用下面的查询将新记录添加到表中时(未知),新记录添加到表的第一个。我想将新记录添加到 table 的最后一个。

这是我的代码:

begin
insert   into  TBLCrowler (Url,Title,ParentId,HasData) values (@Url,@Title,@ParentId,@HasData) 
end
4

2 回答 2

1
select top 1 CatId, Title, ParentId, Url, CrawlerCheck from TBLCrowler where CatId=(Select min(CatId) from TBLCrowler where CrawlerCheck=1)
update TBLCrowler set CrawlerCheck=2 , HasData=2
where CatId=(Select min(CatId) from TBLCrowler where CrawlerCheck=1)
于 2013-11-03T08:29:10.163 回答
0

好的,再次进入突破口。您正在使用关系数据库。它不是工作表,也不是 Word 文档中的矩形单元格数组。它的功能依赖于能够以最有效的方式存储和检索记录。

排序或者通过索引隐含,DBMS 可以随意忽略它,并且无论如何都可以更改,或者通过 order by 语句明确要求

如果您希望按添加到表中的时间排序,则添加 created_at 列并在执行插入时填充它。

然后,当您从中选择时,您将添加Order By Created_At到您的选择语句中。

如果您希望该排序“快速”,您可以在 Created_At 列上添加一个索引,然后 DBMS 将勇敢地尝试使用该索引以避免完全通过排序的成本。

退一步思考一下如何编写 DBMS。您隐含的有序性的成本是多少。对“最后一个”表中除“最后一个”记录之外的任何记录的任何更改都意味着“在”它“之后”将每个表中的每条记录都重写到磁盘。插入更糟糕,删除也一样糟糕,这还没有考虑到不同的记录占用不同的空间量。

所以,如果你能找到它们,先把它们扔到最后再扔……

于 2013-10-26T11:29:05.720 回答