在sql中不指定Order by排序是按照主键吗

2014-02-15  来源:本站原创  分类:MsSql  人气:2 

正如标题所言在sql中不指定Order by,排序是按照主键吗?答案是不一定的,下面有个示例,大家可以参考下

在sql中不指定Order by,排序是按照主键吗?答案是不一定。举个例子:

查询AttendanceEmpRank表,主键是AttendanceEmployeeRankId,而且是聚集索引

在sql中不指定Order by排序是按照主键吗

执行下面的语句,发现第一句不指定Order by的结果跟第二句不一样。

在sql中不指定Order by排序是按照主键吗

再看看执行计划,我们可以知道,第一句用到的是Date索引,而第二句用的是主键索引.

在sql中不指定Order by排序是按照主键吗

再看看另一组sql和查询结果:

在sql中不指定Order by排序是按照主键吗

执行计划中用到的索引也是不同的:

在sql中不指定Order by排序是按照主键吗

所以得出结论:在不指定Order by的情况下,sqlserver会根据执行计划实际查询方式来得到数据,而执行计划会根据sql中很多的因素(的查询列,where条件,order by等)而使用不同的索引,最终出来的结果很可能是不同的。

相关文章
  • 在sql中不指定Order by排序是按照主键吗 2014-02-15

    正如标题所言在sql中不指定Order by,排序是按照主键吗?答案是不一定的,下面有个示例,大家可以参考下 在sql中不指定Order by,排序是按照主键吗?答案是不一定.举个例子: 查询AttendanceEmpRank表,主键是AttendanceEmployeeRankId,而且是聚集索引 执行下面的语句,发现第一句不指定Order by的结果跟第二句不一样. 再看看执行计划,我们可以知道,第一句用到的是Date索引,而第二句用的是主键索引. 再看看另一组sql和查询结果: 执行计划中

  • SQL Server中选出指定范围行的SQL语句代码 2013-10-03

    SQL Server中选出指定范围行的SQL语句代码写法实例 在数据库查询的时候,我们有时有这样的需求,就是要找出数据表里指定范围行内的数据记录,比如说要找出数据表里第10行到第20行的这10条数据,那么我们怎么来实现呢? 按照通常的方法是实现不了的,我们得借助于临时表以及一个函数来实现 代码如下: Select no=Identity(int,1,1),* Into #temptable From dbo.teacher_info order by teacher_name--利用Identi

  • SQL中游标(二) 2015-04-14

    游标是SQL数据库中不可或缺的部分,可以旋转储存在系统永久表中的数据行的副本,下面就将为您详解游标的使用,以及语法,供您参考学习. MS-SQL的游标是一种临时的数据库对象,既对可用来旋转储存在系统永久表中的数据行的副本,也可以指向储存在系统永久表中的数据行的指针. 游标为您提供了在逐行的基础上而不是一次处理整个结果集为基础的操作表中数据的方法. 1.如何使用游标 1) 定义游标语句 Declare <游标名> Cursor For 2) 创建游标语句 Open <游标名> 3)

  • 使用SQL实现小计,合计以及排序 2013-11-07

    本篇文章是对SQL实现小计,合计以及排序进行了详细的分析介绍,需要的朋友参考下 --说明:个人学习笔记,实现小计合计显示,分组按BANK_ID+OP_DATE升序排序 --测试数据 CREATE TABLE #TB(ID VARCHAR(10),BANK_ID VARCHAR(10),OP_DATE VARCHAR(10),OPERATOR_NO VARCHAR(20),AMT DECIMAL(10,2)) INSERT #TB SELECT '1111','001','20121210',12

  • sql 中 case when 语法使用方法 2013-12-02

    sql语言中有没有类似C语言中的switch case的语句? 没有,用case when 来代替就行了. 例如,下面的语句显示中文年月 select getdate() as 日期,case month(getdate()) when 11 then '十一' when 12 then '十二' else substring('一二三四五六七八九十', month(getdate()),1) end+'月' as 月份 CASE 可能是 SQL 中被误用最多的关键字之一.虽然你可能以前用过这个

  • SQL中的三值逻辑 2013-08-12

    在SQL中逻辑表达式的可能值包括TRUE.FALSE和UNKNOWN.它们称为三值逻辑.三值逻辑是SQL所特有的.大多数编程语言的逻辑表达式只有TRUE和FALSE两种值.SQL中的UNKNOWN逻辑值通常出现在包含NULL值的逻辑表达式中(例如,下面这三个表达式的逻辑值都是UNKNOWN:NULL>42;NULL=NULL;X+NULL>Y).NULL值通常表示丢失或不相关的值.当比较丢失值和另一个值(这个值也可能是NULL)时,逻辑结果总是UNKNOWN. 处理UNKNOWN逻辑结果和NU

  • SQL中Group By的使用 2015-03-29

    1.概述 "Group By"从字面意义上理解就是根据"By"指定的规则对数据进行分组,所谓的分组就是将一个"数据集"划分成若干个"小区域",然后针对若干个"小区域"进行数据处理. 2.原始表 3.简单Group By 示例1 select 类别, sum(数量) as 数量之和 from A group by 类别 返回结果如下表,实际上就是分类汇总. 4.Group By 和 Order By 示例2

  • SQL中Charindex和Oracle中对应的函数Instr对比 2013-12-02

    在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识,使用 Instr 函数对某个字符串进行判断,判断其是否含有指定的字符 sql :charindex('字符串',字段)>0 charindex('administrator',MUserID)>0 oracle:instr(字段,'字符串',1,1) >0 instr(MUserID,'administrator',1,1)>0 在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学

  • Java中常用的6种排序算法详细分解 2013-12-18

    这篇文章主要介绍了Java中常用的6种排序算法详细分解,着重说明每个算法的计算过程分解,是探究实现原理级的文章,对于深入理解这些算法有很大帮助,需要的朋友可以参考下 排序算法很多地方都会用到,近期又重新看了一遍算法,并自己简单地实现了一遍,特此记录下来,为以后复习留点材料. 废话不多说,下面逐一看看经典的排序算法: 1. 选择排序 选择排序的基本思想是遍历数组的过程中,以 i 代表当前需要排序的序号,则需要在剩余的 [i-n-1] 中找出其中的最小值,然后将找到的最小值与 i 指向的值进行交换.

  • c#在sql中存取图片image示例 2014-01-02

    这篇文章主要介绍了c#在sql中存取图片image示例,需要的朋友可以参考下 (1)控制台应用程序下演示插入图片 public void InsertIMG() { //将需要存储的图片读取为数据流 FileStream fs = new FileStream(@"E:\c.jpg", FileMode.Open,FileAccess.Read); Byte[] btye2 = new byte[fs.Length]; fs.Read(btye2 , 0, Convert.ToInt3

  • sql中参数过多利用变量替换参数的方法 2014-01-31

    工作中遇到一个需求,需要非常多的参数,本文为大家介绍下sql中利用变量替换参数过多的方法,需要的朋友不要错过 工作中遇到一个需求,需要非常多的参数,例如如下sql, select ff.fundsc||'-'||ff.fundtzfs||'-'||ff.fundcjfl||'-'||ff.fundonefl||'-'||ff.fundtowfl catagory, sf.scode,replace(sf.fund5,'型证券投资基金','')fund5,sf.fund4,sf.fund10, (

  • PHP与MYSQL中UTF8编码的中文排序实例 2014-05-07

    这篇文章主要介绍了PHP与MYSQL中UTF8编码的中文排序方法,实例讲述了根据拼音进行排序的方法,需要的朋友可以参考下 本文实例讲述了PHP与MYSQL中UTF8编码的中文排序方法,分享给大家供大家参考.具体实现方法如下: 一般来说,中文共有三种排序方式: 1.根据拼音排序: 2.根据笔画排序: 3.根据偏旁排序. 系统的默认排序方式为拼音排序了,这个也是我们常用的,下面介绍的就是按拼音排序了 1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行.用gb

  • SQL中DATEADD和DATEDIFF的用法示例介绍 2014-06-18

    这篇文章主要介绍了SQL中DATEADD和DATEDIFF的用法,需要的朋友可以参考下 通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函数中计算出自己所需要的日期! 在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期. 在使用本文中的例子之前,你必须注意以下的问题.大部分可能不是所有

  • SQL中的ISNULL函数使用介绍 2014-12-26

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助 ISNULL 使用指定的替换值替换 NULL. 语法 ISNULL ( check_expression , replacement_value ) 参数 check_expression 将被检查是否为 NULL的表达式.check_expression 可以是任何类型的. replacement_value 在 check_expression 为 NU

  • Java中集合和数组的排序方式小结 2015-03-15

    这篇文章主要介绍了Java中集合和数组的排序方式小结,本文讲解了对数字数组.字符数组排序以及集合序列的排序,需要的朋友可以参考下 根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一个排序的方法,或者框架,但是有几个人能写得比JDK里的还要好呢?使用现有的类的另一个好处是代码易于阅读和维护,这篇文章主要讲的是如何使用现有的类库对数组和各种Collection容器进行排序,(文章中的一 部分例子来自<Java Developers Almanac 1.4>) 首先要

  • Oracle中按指定字符拆分字段 2013-01-23

    Oracle中按指定字符拆分字段 一.建表语句 -- Create table create table TEST1 ( id VARCHAR2(100) not null, name_age VARCHAR2(100) ); 二.建出来的表: 三.按'/'拆分字段,拆成如下图所示: 四.SQL语句 SELECT name_age,SUBSTR(name_age,1,INSTR(name_age,'/')-1), SUBSTR(name_age,INSTR(name_age,'/')+1,(IN

  • MYSQL order by排序与索引关系总结 2013-02-26

    我们平常所说的索引,如果没有特别指明,都是指B+树结构组织的B-Tree索引.其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引.当然,除了B+树这种类型的索引之外,还有哈稀索引(hash index)等. MySQL InnoDB B-Tree索引使用Tips 这里主要讨论一下InnoDB B-Tree索引的使用,不提设计,只管使用.B-Tree索引主要作用于WHERE和ORDER BY子句.这里讨论的均在MySQL-Server-5.1.42测试

  • SQL中IN和EXISTS用法的区别 2013-06-18

    SQL中IN和EXISTS用法的区别 NOT IN SELECT DISTINCT MD001 FROM BOMMD WHERE MD001 NOT IN (SELECT MC001 FROM BOMMC) NOT EXISTS,exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度 select DISTINCT MD001 from BOMMD WHERE NOT EXISTS (SELECT MC001 FROM BOMMC where BOM

  • mssql中获取指定日期所在月份的第一天的代码 2013-10-08

    mssql中获取指定日期所在月份的第一天的代码,需要的朋友可以参考下. 获取指定日期月份的第一天,你可以使用DATEADD函数,减去指定日期的月份过去了的天数,即可. CREATE FUNCTION [dbo].[udf_FirstDayOfMonth] ( @Date DATE ) RETURNS DATETIME AS BEGIN RETURN CAST(DATEADD(day,1 - DAY(@Date), @Date) AS DATETIME) END 或者,用DATEDIFF计算指定日

  • asp 格式化sql中的like字符串 2013-10-28

    <% '****************************** '函数:formatQueryStr(str) '参数:str,SQL语句 '作者:阿里西西 '日期:2007/7/13 '描述:格式化sql中的like字符串 '示例:<%=formatQueryStr(str)%> '****************************** function formatQueryStr(str) dim nstr nstr = str nstr = replace(nstr,