select返回记录的顺序[12]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 youbo2004 的 blog

2.如何没有强制指定索引,不管你的select 语句中是否在where后面使用了索引,sybase均可能基于代价对索引的使用进行调整。由于sybase基于代价执行计划会对索引的使用进行调整,因此不能像oracle那样利用非聚簇索引完成返回记录的自然排序,这时最好加上order by以保证排序的准确。

3.如果需要排序的字段是聚簇索引,那么就可以放心使用该索引完成排序。这时,不论执行计划怎样,sybase均按聚簇索引字段顺序返回记录。对于聚簇索引表,在插入数据时,会引起页内部分记录(值大的记录)的移动,通过移动sybase保证了数据的物理顺序与聚簇索引顺序一致。

4.ms sql server

       不管你的select 语句中是否在where后面使用了索引,sql server均可能基于代价对索引的使用进行调整。即使没有where语句也有可能使用索引,即使有where语句也有可能不用索引。当然,如果表本身就没有创建任何索引就肯定不会使用到索引。

4.1没有索引的表

没有索引的表在称为堆表或堆集。堆集使用 iam管理扩展盘区,多个iam形成iam链。堆集在 sysindexes 内有一行,其 indid = 0。sysindexes.firstiam 列指向 iam 页链的 iam 首页,iam 页链管理分配给堆集的空间。sql server 2000 使用 iam 页在堆集中浏览。堆集内的数据页和行没有任何特定的顺序,也不链接在一起。数据页之间唯一的逻辑连接是记录在 iam 页内的连接。

对于插入操作,当sql server 2000 需要插入新行而当前页没有可用空间时,它使用 iam 和 pfs 页查找具有足够空间容纳该行的页。sql server 使用 iam 页查找分配给对象的扩展盘区。对于每个扩展盘区,sql server 搜索 pfs 页以查看是否有一页具有足够的空间容纳这一行。

本文关键:select返回记录的顺序
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top