部分原始表数据 需求: 按routineId进行group分组 初步想法(错误): select r * from autowork.dbo.PartOnRoutine where routineId='1050' or routineId='1060' group by routineId; 难点:一个routineId对应多个part,需先将part合并,再分组 解决:xml select routineId,(select [partnr]+',' from autowork.dbo.Pa…
环境: Sql Server2012 SP3企业版,Windows Server2008 标准版 问题由来: 最近在做DB优化的时候,发现一个存储过程有非常严重的性能问题, 由于整个SP整体逻辑是一个多表关联的复杂的查询,整体结构比较复杂的,通过的分析和尝试, 最后发现问题出在其中一个大表的查询上实现方式上, 因为这个大表上的意外的执行方式,导致其他表无法被驱动,其他表也是表扫描的方式参与join 导致后面整个表之间join以及查询编译出来一系列极其低效的执行效果(不合理的执行计划) 这里单独将…
varchar长度短的情况下,基于这个字段的group by效率更高.所以开发在设计表的时候要使该字段在满足业务需求的情况下尽可能的小. ps:本想找源码看看代码那是怎么处理的,直接用vim看文件太累了,还是把家里的ubuntu电脑带来,下载源码用eclipse跟吧....吐槽微软的vs,,,,,,,太麻烦,还tm要安装windows最新版本 因为group by是需要排序的,上面的测试中也是只有排序的地方可能走的方式不同,所以我就直接在filesort.cc中filesort方法设置断点跟踪.…
    分组操作group by 和分组的强化(rollup) 分组操作和分组函数的使用,对于编写SQL语句的人来说,是最基本的概念. 我们来看下面的例子: 在这里我们使用员工表EMP scott@DB01> select * from emp;     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO ---------- ---------- ---------…
例子:在一个StudentScore表中,有序号ID,班级ClassId,学生姓名Name,性别Sex,语文成绩ChineseScore,数学成绩MathScore,平均成绩AverageScore等等一些学生成绩及个人信息字段 问一:每个班级中,平均成绩在60(含60)分以上的学生人数? 问二:每个班级中本次考试平均成绩是班级前三的同学的所有信息? 问三:每个班级中语文与数学都达到60(含60)分以上的同学的所有信息? 一.Group By 分组 group by ClassId group…
64位的Windows7和Windows Server 2008 R2为了能够在一台机器上,支持超过64个逻辑CPU, 引入了Processor Group这个概念.Processor Group会把一些逻辑CPU编成一个组,但是一个组内的逻辑CPU总数不能超过64个.Windows 会将超过64个CPU(小于128)分成两组(比例随机不固定),操作系统随机地为每个进程分配一个Processor Group,而SQL Server 2008会调用GetSystemInfo(&siSysInfo)…
数据库镜像可以与事务复制一起使用实现数据库整体的高可用性和高性能,其中镜像可以提供故障检测和故障转移,复制则用于实现读写分离. 数据库镜像涉及一个数据库的两个副本,这两个副本通常驻留在不同的计算机上. 在任何给定时间都只有一个数据库副本可供客户端使用. 该副本称为主体数据库. 客户端对主体数据库所做的更新应用到数据库的另一副本(称为镜像数据库). 镜像涉及将在主体数据库上执行的每个插入.更新或删除操作的事务日志应用到镜像数据库上. 复制将数据和数据库对象从一个数据库复制和分发到另一个数据库,然后…
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 group by 关键字可以根据一个或多个字段对查询结果进行分组 group by 一般都会结合Mysql聚合函数来使用 如果需要指定条件来过滤分组后的结果集,需要结合 having 关键字:原因:where不能与聚合函数联合使用 group by 语法格式 GROUP BY <字段名>[,<…
场景:项目中某张表的字段长度不够用了,现在要增加其长度 分两种情况: 1.表中没有数据的情况,直接一条sql语句就能解决 alter     table    表名    modify(字段名   字段类型 ) 例: alter table A modify(name varchar2(4000)) 2.表中有数据的情况下,也很简单,讲个小思路,先将原字段改个名字,然后新增一个列,这个新增的列名跟原字段列名一致,然后将原字段中的数据复制进新增字段中即可 创建一张C表,对应name字段长度是100…
group by 分组:一般情况下group需与统计函数(聚合函数)一起使用才有意义 mysql中的五种统计函数: ()max:求最大值 select max(goods_price) from goods 这里会取出最大的价格的值,只有值 #查询每个栏目下价格最高的 select cat_id,max(goods_price) from goos group by cat_id; #查出价格最高的商品编号 select goods_id,max(goods_price) from goods…
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都有,也可以说与我一样困惑的有好多人.感谢大神在网上的活跃,我知道了一对一关系存在的必要性. 1.首先就是这种关系出现的场景是什么样子,最好可以举个实际中的需求. 这样的场景有很多,比如:就拿最普通的用户信息来说,数据库中有一个表为user,一个表为user_auth.user表主要存放的字段为用户基…
SQL Server 在缺少文件组的情况下如何还原数据库 一.背景 我有一个A库,由于a,b两张表的数据量比较大,所以对表进行分区:在把A库迁移到一个新的集群上去,我只备份了A库的主分区过去进行还原为B库(主分区的备份还原可参考:SQL Server 维护计划备份主分区 和 主分区备份与还原),为了对a,b表进新的数据,我修改了a,b表名,在B库新建了两张不分区的a,b表: 这样运行都没有什么问题的,但是在一次我分离了数据库B,拷贝了mdf和ldf文件,现在想使用mdf和ldf还原为B库的时候出…
在网上查了好多这方面的例子,但是似乎说的都不准确,在咨询朋友后终于实现了本机不安装oracle 的情况下,在windows系统上实现连接服务器上的数据库,现在贴出来与大家共享. 首先,我们需要一个PL/SQL 工具,网上有许多资源,这里就不重复给出,安装完,打开就会有如下界面,开始的时候只会有用户名和密码,如图:  接下来我们需要下载 :instantclient-basic-nt-12.1.0.1.0 (1).zip,这里我提供下载地址:http://pan.baidu.com/s/1skRw…
spring 默认情况下事务是惟一的 同一个方法里面第一个sql开启后 在执行完 将事务传递给下一个sql…
http://www.itpub.net/forum.php?mod=viewthread&tid=1810967 问题: 比如 count(case when  pday_id=${deal_date}   then 1  end)  我有点想不明白具体什么情况下count() 这个小括号里面还要用case when  大家做BI统计的时候一般什么情况用啊  还有个问题 select case when actionname in ('haha','heihei') then '-1' els…
为了服务器的安全,通常情况下我们需要启用Windows 防火墙,然而在启用了Windows 防火墙后会发现会引发一系列的问题,比如无法通过本地远程服务器桌面.无法在本地远程连接SQL Server等,这篇文章我们主要讲的是如何解决在启用了Windows 防火墙后允许SQL Server远程连接 首先,我们需要添加 SQL Server 服务侦听 Windows 防火墙的入站例外,以便客户端可以通过 Windows 防火墙建立 SQL Server 连接的 TCP 端口. 其次,如果我们不在连接字…
主题简介 在数据库运维中我们会遇到各种各样的问题,这些问题的根源可能很明显,也可能被某种表象掩盖而使我们认不清.所以运维面临的两大问题就是,第一我们没有看清本质,第二应用不允许修改.那么我们如何解决这两个问题,是每一个运维者都应该思考的.今晚的分享将会从三个方面来进行.如何准确定位问题,如何不修改应用进行优化,以及如何通过SQL审核防患未然. 大家好.我是云和恩墨公司的专家罗海雄,主要专长于性能优化这个领域,包括数据库的优化,SQL优化等.今天给大家分享的主题是“如何在无法修改应用时进行数据库优…
不要用GUID 当主键 没有规律 可以用雪花ID DBA 优化法则 硬件资源是根本,DBA是为了充分利用硬件资源 一般清空下可以不使用外键 可以提高性能 合理使用临时表 临时表分页; 一些查询语句加with(nolock)注意经常发生叶分裂容易造成重复读和跳读: 合理添加索引: 好的where条件: HashJoin>MergerJoin>NestedLoopJoin; 连接查询尽量选择聚集索引字段上: 一.创建索引 1. 要尽量避免全表扫描,首先应考虑在 where 及 order by 涉…
转发自:https://www.cnblogs.com/datazhang/p/5498789.html sqlserver同步后在不重新初始化快照的情况下新增表        在已有事务复制中,时长需要新增表.索引,这些变更时不会同步到从库中.如果采用默认的设置,每次都需要重新初始化快照,从库重新应用快照和未执行的同步命令,这显然是无法在线上实践的方法.另一种方法是将新增的架构变更新建一个发布订阅,但会造成维护困难,增加出错的几率.        可以通过设置immediate_sync和al…
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHER…
本文主要描述Oracle备库日志与主库日志之间有gap,切主库这部分gap的归档日志已经删除或丢失,如何在不重建备库的情况下,恢复备库. 欢迎转载,请注明作者.出处. 作者:张正 blog:http://space.itpub.net/26355921  QQ:176036317 如有疑问,欢迎联系. 在dataguard环境中,由于主库archivelog丢失,且尚未同步到standby,问如何在避免 重建standby的情况下来将standby恢复成功的. 下面是我的测试过程,供参考! —-…
一,什么情况下使用索引1. 表的主关键字 自动建立唯一索引 2. 表的字段唯一约束 ORACLE利用索引来保证数据的完整性 3. 直接条件查询的字段 在SQL中用于条件约束的字段 如zl_yhjbqk(用户基本情况)中的qc_bh(区册编号) select * from zl_yhjbqk where qc_bh=’7001’ 4. 查询中与其它表关联的字段 字段常常建立了外键关系 如zl_ydcf(用电成份)中的jldb_bh(计量点表编号) select * from zl_ydcf a,z…
在teradata sql中不存在concat()函数或者stuff()函数,在此情况下,如何实现多条字符串数据合并成一行? 在查找不同方法过程中,在stackflow中找到最简便的方法,使用xml_agg()函数 https://stackoverflow.com/questions/45306260/concatenate-strings-from-multiple-records-in-teradata-sql 本文问题 数据如下图所示: 目标结果: sql: select item_si…
在丢失归档情况下,恢复时常会遇到ora-01113错误,以下实验模拟表空间offline,然后在丢失归档文件的情况下使用BBED修改文件头信息,最后恢复数据文件: 数据库版本: SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle - 64bit Production PL - Production C…
Oracle redo 日志损坏的几种情况下的恢复 第一:损坏的redo为非正在使用的redo log 1.归档模式,不是当前正在日志损坏,数据库打开模式. 模拟损坏:SQL> select * from v$log;    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME--------…
1.需求描述 我们知道Windows Cluster 都是多节点的,当虚拟IP漂移的时候,一般都是从一个节点漂移到另外一个节点.如果可以及时捕捉到旧节点信息是什么.新节点信息是什么对我们提供高可用的数据库服务很重要,只有捕捉到这些信息后才可以进一步检查相应的Job.账号,甚至是调整相应的应用服务等. 2.基本原理 在上一节<SQL Server Alwayson架构下 服务器 各虚拟IP漂移监控告警的功能实现 -1(服务器视角)>,我们实现了针对某一个节点的监控即这个节点是否有虚拟IP新增或消…
SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource Manager, 比如 Pacemaker在集群中添加 Availability Groups详细解说1. 配置三台 Linux 集群节点在集群中的三台服务器之间可以互相通信安装 SQL Server在 Linux 上,往集群管理器中添加集群资源时,一定是先建立集群资源,接着将新建的资源加入到集群…
order by 和 group by 的区别: 1,order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字段名,可以是多个字段名. 2,group by 从英文里理解就是分组.必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段. 3,在使用group by的语句中,只能select用于分类的列(表达式),或聚合函数.where条件用于group by之前,having用于group by 之后对结果进行筛选. 扩展资料: 一.ord…
13.5 恢复临时文件 临时文件没有也不应该备份.通过V$TEMPFILE可以找到所有的临时文件. 此类文件的损坏会造成需要使用临时表空间的命令执行失败,不至于造成实例崩溃或session中断.由于临时表空间不用保存永久性数据,所以RMAN不会对其备份,一旦损坏采用的恢复策略是替换或者重建. SQL> ALTER TABLESPACE TEMP ADD TEMPFILE ... 13.6 恢复在线重做日志 所谓恢复在线日志是指其损坏后,创建新的日志取代受损的日志,最终的目的是能够让LGWR进程和…
13.3无备份恢复控制文件 没有备份恢复控制文件其实就是在nomount状态,create control创建一个新的控制文件. dba必须知道4个信息才能正确的创建:数据库名.在线日志路径及其大小.在线的可读/写数据文件路径.数据库字符集 其中指定数据库字符集是为了在打开数据库之前执行recover tablespace  ..或restore tablespace时可以正确解析表空间名称 --之前在dsi系列介绍了使用bbed查看数据文件头的方式来确定字符集,数据库名等方法. --maxlo…