我有一个包含多个列的表,这些列按其中的3列正确排序。现在的要点是如何使用这些列在特定点插入新行。我举一个例子,请假设有一个像这样的表:
Name Order1 Order2 Order3 Address
Marc 30 01 7 Street1
James 30 03 7 Street1
Dan 31 02 5 Street3
Rick 31 02 2 Street1
如果我插入新记录(Tony),我可以使用
Marc 30 01 7 Street1
James 30 03 7 Street1
Dan 31 02 5 Street3
Rick 31 02 2 Street1
Tony 30 01 5 Street1
但是我需要的顺序是
Marc 30 01 7 Street1
Tony 30 01 5 Street1
James 30 03 7 Street1
Dan 31 02 5 Street3
Rick 31 02 2 Street1
(详情来说,对于订单1和2,我需要更低的数字在顶部,如果订单3我需要更高的数字在顶部)。
您对如何操作有任何建议吗?简单的方法是沿着表格移动并复制新订单中的新数据但是很长......
答案 0 :(得分:4)
您通常不会将数据插入到表的中间 - 如果定义了聚簇索引,则插入位于末尾或中间位置。
只需将行添加到表中,然后在检索数据时设置顺序:
SELECT *
FROM People
ORDER BY Order1, Order2, Order3 DESC
如果需要物理结构按此顺序,则在Order1, Order2, Order3 DESC
上添加聚簇索引。但请注意,仍然需要在查询时指定顺序,因为如果您未在查询中指定顺序,则SQL可以按其认为合适的顺序返回记录。
请注意,插入到聚簇索引的中间会影响性能,因为服务器可能需要重新组织数据。如果表格很小,那应该不是问题。
答案 1 :(得分:1)
RDBMS通常以集合论数学概念为核心。这使得基于集合的操作(快速)对数据而不是基于光标的操作(慢)。当您考虑存储在RDBMS中的表中的数据时,将其视为一组数据,这并不意味着任何顺序。索引可以应用于表,以便生成订购数据的子集,以提高查找速度。 RDBMS提供了可以对数据执行的操作,以便将其排序以便进行检索,例如Order By
语句。这将对检索到的数据集执行基于游标的操作,以便根据定义的参数对其进行排序。对数据库结构有这种基本的了解将有助于使用RDBMS的各个方面,从执行CRUD操作,到优化,到正确的结构等。
总结: