首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql:深究 sql 默认排序 order by

实例 ---- 群友问:请教一个问题,mysql 默认排序问题,当sql 语句 的排序没有指定 主键(id)的时候是按着什么规则排序的呢? ?...这个 sql 语句 当 hit_count = 0 和 uptime = 0 时 的数据和 跟 limit_count 变化 ?...大概意思就是数据储存的表 不是有序的,而是一个集合,在没有使用 order by 来排序的时候,不能默认就是 根据主键排序。...大概意思:没有默认的排序顺序。即使表具有聚集索引,也不能保证按该顺序获得结果。如果需要特定的顺序,则必须使用ORDER BY子句。 ?...结论 ---- 到这大家应该明白了,mysql 的没有默认排序,如果需要排序一定要加上 order by 来排序,大家有没有遇到过这样的问题,欢迎一起来讨论,如果有不对的地方,请指正,感谢。

4.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    sql server修改默认端口号(win10系统)

    一般我们大概是不需要修改数据库的默认端口的,目前想到的就是 需要在一台机器上安装多个sql server服务器的时候或者安装多个版本sql server或者叫安装多个sql server...(端口号不可以随便修改,我这只是随便写了一个,正式环境要注意了) A,修改前测试连接 先打开microsoft sql server manager studio ,登录,无论是按照 服务器\实例名称(...B,开始修改默认端口(端口号不可以随便修改,我这只是随便写了一个,正式环境要注意了) 1, 在 控制面板-》管理工具-》计算机管理中 找到sql server 配置管理器。...要做的就是把tcp端口改为2997. 2) 修改客户端,先把默认端口修改为3000,执行第四步重启服务。然后连接一下看看在客户端和服务端tcp端口不一样的情况下,连接是否成功。...(事实证明我的连接是成功的,看来和客户端的端口无关) 4,重启服务 5,然后打开microsoft sql server manager studio ,服务器名称输入192.168.1.125,2997

    1.6K10

    【Linux 内核 内存管理】分区伙伴分配器 ④ ( 备用内存区域列表排序方式 | 节点优先顺序 | 区域优先顺序 | 排序方式优缺点 | 默认排序方式 )

    文章目录 一、备用内存区域列表排序方式 ( 节点优先顺序 | 区域优先顺序 ) 二、备用内存区域列表排序方式优缺点 ( 节点优先顺序 | 区域优先顺序 ) 三、备用内存区域列表默认排序方式 在上一篇博客...( 节点优先顺序 | 区域优先顺序 ) ---- 包含了 所有内存节点 的 备用内存区域列表 , 有 2 种排序方式 : ① 节点优先顺序 : 先 根据 " 节点距离 “ 由远到近 进行排序 ,...然后根据 ” 区域类型 " 由高到低 进行排序 ; ② 区域优先顺序 : 先 根据 " 区域类型 " 由高到低 进行排序 , 然后 根据 " 节点距离 " 由远到近 进行排序 ; 二、备用内存区域列表排序方式优缺点..., 但是可能会在 高区域类型内存 耗尽前 使用 低区域类型内存 ; ② 区域优先顺序 : 该排序 减少 低区域类型内存 耗尽的概率 , 但是不能保证选择的内存距离最近 ; 三、备用内存区域列表默认排序方式...---- 默认排序方法 : 系统会自动选择 最优 排序策略 ; 64 位系统 需要用到的 DMA 和 DMA32 类型区域较少 , 选择 " 节点优先顺序 " ; 32 位系统 选择 " 区域优先顺序

    1.2K20

    SQL Server2000导出数据时包含主键、字段默认值、描述等信息

    时经常用SQL Server2000自带的导出数据向导将数据从一台数据库服务器导出到另一台数据库服务器: 结果数据导出了,但表的主键、字段默认值、描述等信息却未能导出,一直没想出什么方法,...说明 1.生成SQL脚本时应注意包含扩展属性、主键、默认值等信息; 如何导出?...SQL Server2000生成SQL脚本时导出字段描述、主键和默认值等信息 SQL Server2000生成SQL脚本时默认没有生成字段描述、主键和字段默认值等信息,但这些信息都非常重要,...是必须要生成的,所以在生成SQL脚本时必须手工设置下: 1.生成字段描述:切换到"设置格式"选项卡,钩选"包括扩展属性" 2.生成主键和字段默认值:切换到"选项"选项卡,钩选"...编写主键、外键、默认值和检查约束脚本" 2.如果服务器上的数据库用户名和本地用户名不同,应该将SQL脚本中的数据库用户改为服务器上的用户,例如本地用户是dbo,服务器上的用户是dnawo,就应将

    1.2K110

    面试:mysql最全索引与优化详解

    server 端包括,sql优化器,缓存主件: 一条sql的查询过程: 首先client 向server端发送一条查询sql. server端 先去缓存中进行查询,如果命中缓存,直接返回,否则进入下一个阶段...但是实现PageDirectory二分查询的前提就是数据的顺序性。没错,这里我们可以看出innodb会默认将数据按照主键索引进行排序,每行数据的记录头里有nextRecord字段指向下一条数据。...值进行排序, 一个表可以有多个辅助索引,辅助索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同; 可以将创建联合索引,但是联合索引遵循最左匹配原则: ?...extra Using filesort: 说明MySQL会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL中无法利用索引完成的排序操作称为“文件排序” 。...出现这个就要立刻优化sql。 Using index: 表示相应的select 操作中使用了覆盖索引(Covering index),避免访问了表的数据行,效果不错!

    73050

    聚集索引和非聚集索引(转)

    一  索引简介 索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,SQL的主流索引结构有B+树以及Hash结构,聚集索引以及非聚集索引用的是B+树索引。...1.创建表的时候指定主键(注意:SQL Sever默认主键为聚集索引,也可以指定为非聚集索引,而MySQL里主键就是聚集索引) create table t1( id int primary key..., name nvarchar(255) ) 2.创建表后添加聚集索引 SQL Server create clustered index clustered_index on table_name...,因此如果再在上面创建索引的时候会根据索引列的排序移动全部数据行上面的顺序,会非常地耗费时间以及性能。...Server里面会对查询自动优化,选择适合的索引,因此如果在数据量不大的情况下,SQL Server很有可能不会使用非聚集索引进行查询,而是使用聚集索引进行查询,即便需要扫描整个聚集索引,效率也比使用非聚集索引效率要高

    96810

    【索引潜规则】-覆盖索引、ICP、MRR详解

    下图就展示了该条SQL回表的过程。 ? 通过上图我们可以看到回表的过程需要扫描两棵树,这样增加了磁盘扫描,如何避免回表呢?这就引出了我们下面要将的内容:覆盖索引。...ICP可以减少回表的次数,同时也能减少server层与引擎层交互的次数。...当不使用ICP策略时,引擎会通过二级索引根据age=30的条件找到对应的rowid,再根据rowid回表找到对应的数据行,然后拿到server层,最后在server层根据where条件进行过滤。...提高排序和分组的效率。 将随机IO转化为顺序IO。 提高部分聚合函数的效率,比如min(),max()等。...如何创建高效的索引呢,下面给出几点建议仅供参考: 在经常用于排序和分组查询的字段上建立索引,可以避免了内存排序和随机I/O。

    1.5K10

    《T-SQL查询》读书笔记Part 3.索引的基本知识

    为了使空间分配更有效,SQL Server 不会将所有区分配给包含少量数据的表。MSSQL有两种类型的区:混合区和统一区,区别详见参考资料(4)。 ? PS:看来MSSQL比较喜欢8这个数字。...数据链内的页和行将按聚集索引键值进行排序,聚集索引保证了表格的数据按照索引行的顺序排列。 ?...这里可以看到其中已排序这个属性为False,就关系引擎来说,该运算符不需要返回有序的数据。(即返回任何顺序的数据都没有问题) ?   ...(1)[美] Itzik Ben-Gan 著,成保栋 译,《Microsoft SQL Server 2008技术内幕:T-SQL查询》 (2)Hyber Wang,《重新理解SQL Server的聚集索引表与堆表...》 (3)悉路,《SQL Server性能优化(8)堆表结构介绍》 (4)Microsoft TechNet,《TN 页和区》 (5)xwdreamer,《Sql Server中的表组织和索引组织(聚集索引结构

    72830

    程序猿必备技能之MySQL高级篇

    ,并且相邻节点具有顺序引用的关系; 1.2.1....通过explain,能够很清晰的知道SQL查询读取表的顺序、哪些索引被使用到、表直接的引用关系、每张表有多少条数据被扫描等等。...id相同,执行顺序由上至下; id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行; id相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行。...Using filesort: 说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。...常见于排序order by 和分组查询 group by; Using index: 表示相应的select操作中使用了覆盖索引(Coveing Index),避免访问了表的数据行,效率不错!

    1.5K31
    领券