SQL语句相关
文章平均质量分 80
Archy_Wang_1
有些代码不应该被忘记,也没有源代码不应该被记住。
展开
-
sqlserver索引碎片过大如何处理 sqlserver索引碎片查询
每页上的平均可用字节数:所扫描的页上的平均可用字节数。越高说明有内部碎片,不过在你用这个数字决定是否有内部碎片之前,应该考虑fill factor(填充因子)。扫描页数:如果你知道行的近似尺寸和表或索引里的行数,那么你可以估计出索引里的页数。看看扫描页数,如果明显比你估计的页数要高,说明存在内部碎片。扩展盘区扫描碎片:无序扩展盘区在扫描索引叶级页中所占的百分比。每个扩展盘区上的平均页数:该数是扫描页数除以扫描扩展盘区数,一般是8。平均页密度(完整):每页上的平均可用字节数的百分比的相反数。原创 2024-08-24 13:19:07 · 483 阅读 · 0 评论 -
SQL SERVER日常表碎片和统计信息优化脚本
由于索引优化过程中,会导致ldf文件快速增长问题,为了避免这个问题,下面的SQL增加了对日志文件可用空间大小,以及磁盘可用空间大小的判断,当优化的表需要的空间高于上面两个可用空间和时将终止执行,避免由于空间增长导致数据库出现问题。索引优化:执行第1/9298个表(0.516):dbcc dbreindex(T_IV_SALESIC_O) with no_infomsgs :耗时(秒):1。磁盘可用空间为(MB):3379198。索引优化:开始获取需要优化的表2024-07-18 15:03:15.540。原创 2024-08-23 09:23:30 · 631 阅读 · 0 评论 -
SQL Server中如何自动抓取阻塞
但我们也经常碰到客户生产环境出现阻塞,由于不会抓取或者没有及时抓取,导致问题发生后,由于没有相关的信息,导致问题不能定位的问题。点击阻塞的记录,双击字段为blocked_process的值列,就可以看到通过脚本抓到的类似的阻塞会话详细信息。但,这种方式抓取,从实际运行情况来看,当阻塞的会话超过2个时,记录的信息的会话不完整,存在丢失的问题,需要注意。但此时扩展事件抓取的数据,丢失了会话55的信息。选择【阻塞】事件会话,按右键弹出菜单,选择【启动会话】表示会话55阻塞了会话53,会话53阻塞了会话73。原创 2024-08-23 09:06:43 · 491 阅读 · 0 评论 -
SQL Server中CPU使用率过高的排查
如果sqlserver进程导致CPU使用率过高,则最常见的原因是执行表或索引扫描的查询,其次是排序、哈希操作和循环 (嵌套循环运算符或 WHILE (T-SQL) )。对于安装了sqlserver的服务器,可以先看下任务管理器中sqlserver对cpu的占用情况,确定是否是sqlserver导致cpu消耗过高。从输出中具有最高improvement_measure值的前5或10条建议开始。这些索引对性能有最显著的积极影响。使用以下查询检查是否缺少索引,并应用具有高改进度量值的任何建议索引。原创 2024-08-05 16:50:24 · 494 阅读 · 0 评论 -
SQLSugar 基本语法+数据库读写分离
面向对象的操作数据库,相比EFCore、Dapper等其他ORM框架性能支持性能轻便快捷,数据库的读写分离能大大减轻数据库的压力原创 2024-07-06 15:26:05 · 2127 阅读 · 0 评论 -
从零搭建故障转移,sql server2016 AlwaysOn无域高可用性全教程
从零搭建故障转移,sql server2016 AlwaysOn无域高可用性全教程!原创 2022-07-06 14:33:51 · 1922 阅读 · 3 评论 -
Windows Server2016+SqlServer2016搭建AlwaysOn集群(三)
AlwaysOn 可用性组概述 (SQL Server),经过前两篇文章的铺垫后,现在正式开始搭建AlwaysOn。原创 2022-07-06 14:32:23 · 1147 阅读 · 0 评论 -
Windows Server2016+SqlServer2016搭建AlwaysOn集群(二)
集群规划节点加域重启并用本地管理员账户重新登陆后,开始安装故障转移集群功能(WSFC),并创建故障转移集群。原创 2022-07-06 14:30:33 · 1789 阅读 · 0 评论 -
Windows Server2016+SqlServer2016搭建AlwaysOn集群(一)
AlwaysOn是SqlServer实现高可用的解决方案之一,需要部署在Windows故障转移集群(WSFC)上,Windows集群中每个节点上开启了AlwaysOn的SQLServer应用组成了SQLServer集群!原创 2022-07-06 14:28:52 · 3413 阅读 · 0 评论 -
sql server 2016不能全部用到CPU的逻辑核心数的问题
最近在工作中遇到了,sql server 2016 不能把CPU 的核心全部用到的问题.通过分析工具看到总共CPU核心有72核,但sql只能用到40核心,想信也有很多人遇到这问题,那么今天这节就先说说这问题是怎么出现的。首先 介绍下服务器的环境Windows 2008 R2EnterpriseEdition(X64) + MicrosoftSQLServer2012(SP1)EnterpriseEdition(64-bit)CPU 2路 18核 开启超线程后是72核...原创 2022-02-16 18:48:23 · 2838 阅读 · 1 评论 -
SQL Server表分区
一、什么是表分区一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理。这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的。所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高select效率,还可以对历史数据经行区分存档等。但是数据量少的数据就不要凑这个热闹啦,因为表分区会对数据库产生不必要的开原创 2021-10-14 09:34:15 · 2542 阅读 · 0 评论 -
SqlServer的with(nolock)的用法
本文导读:要提升SQL的查询效能,一般来说大家会以建立索引(index)为第一考虑。其实除了index的建立之外,当我们在下SQL Command时,在语法中加一段WITH (NOLOCK)可以改善在线大量查询的环境中数据集被LOCK的现象藉此改善查询的效能。不过有一点千万要注意的就是,WITH (NOLOCK)的SQLSELECT有可能会造成Dirty Read。with(nolock)的介绍大家在写查询时,为了性能,往往会在表后面加一个nolock,或者是with(nolock),其目的就.原创 2021-10-14 08:57:37 · 3754 阅读 · 0 评论 -
使用SQL Server分区表功能提高数据库的读写性能
一般来说一个系统最先出现瓶颈的点很可能是数据库。比如我们的生产系统并发量很高在跑一段时间后,数据库中某些表的数据量会越来越大。海量的数据会严重影响数据库的读写性能。这个时候我们会开始优化系统,一般会经过这么几个过程: 找出SQL慢查询,针对该SQL进行优化,比如改进SQL的写法,查看执行计划对全表扫描的字段建立索引 引入缓存,把一部分读压力加载到内存中 读写分离 引入队列,把并发的请求使其串行化,来减轻系统瞬时压力 分表/分库 对于第五点优化方案我们来细说原创 2021-02-17 08:24:41 · 1763 阅读 · 0 评论 -
SQLSERVER 将多列转成一行的语句学习
昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行比如表中有两列数据 :ep_classesep_nameAAA 企业1AAA 企业2AAA 企业3BBB 企业4BBB 企业5我想把这个表变成如下...原创 2020-02-25 14:24:05 · 2039 阅读 · 0 评论 -
SQL Server之深入理解STUFF
最近项目无论查询报表还是其他数据都在和SQL Server数据库打交道,对于STUFF也有了解,但是发现当下一次再写SQL语句时我还得查看相关具体用法,说到底还是没有完全理解其原理,所以本节我们来谈谈STUFF,Jeff是在项目中哪里不熟悉,哪里不会或者哪里耗时比较多就会去深入理解和巩固即使是很基础的知识,直到完全不用浪费时间去查阅相关资料,这是我的出发点。深入理解STUFFSTUFF字符...原创 2019-07-11 19:33:05 · 300 阅读 · 0 评论 -
SQLserver的WITH..AS..
一.WITH AS的含义WITH AS短语,也叫做子查询部分(subquery factoring),可以定义一个SQL片断,该SQL片断会被整个SQL语句用到。可以使SQL语句的可读性更高,也可以在UNION ALL的不同部分,作为提供数据的部分。对于UNION ALL,使用WITH AS定义了一个UNION ALL语句,当该片断被调用2次以上,优化器会自动将该WITH AS短语所获取的...原创 2019-06-12 11:55:29 · 998 阅读 · 0 评论 -
SQLServer数据库文件压缩
1.数据库文件压缩 点击数据库表右键-->任务-->收缩-->数据库2.数据库日志文件压缩--设置为简单模式ALTER DATABASE 数据库名SET RECOVERY SIMPLE;GO-- 将日志文件压缩到1 MB. 数据库日志文件名查sys.sysfiles表的日志文件的name字段SELECT * FROM sys.sy...原创 2019-05-06 13:48:34 · 10676 阅读 · 2 评论 -
SQLServer的"触发器"详解
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。Ø 什么是触发器 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delet...原创 2018-11-22 15:16:13 · 872 阅读 · 0 评论 -
SQLServer 的 "游标" 详解
什么是游标结果集,结果集就是select查询之后返回的所有行数据的集合。游标则是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据。一般复杂的存储过程,都会有游标的出现,他的用处主要有:定位到结果集中的某一行。 对当前位置的数据进行读写。 可以对结果集中的数据单独操作,而不是整行执行相同的操作。 是面向集合的数...原创 2018-11-22 15:01:33 · 917 阅读 · 0 评论 -
SQLSERVER排查CPU占用高的情况
现象他说是这几天才出现的,而且在每天的某一个时间段才会出现CPU占用高的情况内存占用不太高,只占用了30个GCPU占用100%排查方向 一般排查都是用下面的脚本,一般会用到三个视图sys.sysprocesses ,dm_exec_sessions ,dm_exec_requests1 USE master2 GO3 --如果要指定数据库就把注释去掉4 ...转载 2018-07-21 08:50:01 · 550 阅读 · 0 评论 -
Sql语句复制表结构
1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表2.只复制表结构到新表CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2即:让WHERE条件不成立.方法二:(由tianshibao提供)CREATE TABLE 新表 LIKE 旧表3.复制旧表的数据到新表(假设两个表结构一样)I原创 2016-11-12 16:14:19 · 783 阅读 · 0 评论 -
数据库性能优化常用sql脚本总结
最近闲来无事,正好抽出时间,来总结总结 sql性能优化方面的一下小技巧,小工具。虽然都是些很杂的东西,但是我个人觉得,如果真的清楚了里面的一下指标,或许真的能抵半个DBA。 有些时候,找不到DBA或者根本就没有DBA的时候,程序员就只能靠自己想办法了解决。久而久之,久病成医,说不定就成了半个DBA了。 这里面的一些脚本,有自己总结的,也有网上找的。希望能给程序员在性能优化方面一些帮助。(转载 2016-10-27 14:36:16 · 391 阅读 · 0 评论 -
SQL datediff (时间差)
DATEDIFF 函数 [日期和时间]功能 返回两个日期之间的间隔。语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 )date-part : year | quarter | month | week | day | hour | minute | second | millisecond参数 date-p原创 2017-02-23 14:42:28 · 898 阅读 · 0 评论 -
row_number() OVER(PARTITION BY)函数介绍
OVER(PARTITION BY)函数介绍开窗函数 Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。 开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:1:over后的写法原创 2017-02-23 14:55:35 · 851 阅读 · 0 评论 -
sql 查出一张表中重复的所有记录数据
1、在面试的时候碰到一个 问题,就是让写一张表中有id和name 两个字段,查询出name重复的所有数据,现在列下:select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1)2、查询出所有数据进行分组之后,和重复数据的重复次数的查原创 2017-05-04 15:51:49 · 1890 阅读 · 0 评论 -
SQL Server表分区的详解
什么是表分区一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理。这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的。所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高select效原创 2017-05-17 10:59:43 · 539 阅读 · 0 评论 -
SQL语句优化分析
开门见山,问题所在sql语句性能达不到你的要求,执行效率让你忍无可忍,一般会时下面几种情况。网速不给力,不稳定。服务器内存不够,或者SQL 被分配的内存不够。sql语句设计不合理没有相应的索引,索引不合理没有有效的索引视图表数据过大没有有效的分区设计数据库设计太2,存在大量的数据冗余索引列上缺少相应的统计信息,或者统计信息过期....那么我们如何给找出来导致性能慢的的原因呢?原创 2017-05-17 11:22:58 · 428 阅读 · 0 评论 -
SQLserver 语句考试题
--一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,S#为学生的ID)------------------------------------表结构----------------------------------------学生表Student(编号S#、姓名SName、年龄SAge、性别SS原创 2017-08-04 08:55:18 · 1703 阅读 · 0 评论 -
SQL的GROUP BY详解
1、概述“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。2、原始表3、简单Group By示例1select 类别, sum(数量) as 数量之和from Agroup by 类别返回结果如下表,实际上就是分类汇原创 2017-08-04 09:23:29 · 883 阅读 · 0 评论 -
SQL ISNULL 函数
sql 中 NULL 值的处理;微软的 ISNULL() 函数用于规定如何处理 NULL 值。NVL(), IFNULL() 和 COALESCE() 函数也可以达到相同的结果。语法ISNULL ( check_expression , replacement_value )参数check_expression将被检查是否为 NULL的表达式。check_expression 可原创 2017-08-19 08:07:01 · 1589 阅读 · 0 评论 -
SQL的Convert函数详解
格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到.例子:SELECT CONVERT(varchar(30),getdate(),101) now结果为:now-----------原创 2017-08-19 08:09:43 · 2428 阅读 · 0 评论 -
SQL中的case when then else end用法
Case具有两种格式。简单Case函数和Case搜索函数。--简单Case函数CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女'ELSE '其他' END--Case搜索函数CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女'EL原创 2017-08-19 08:13:09 · 520 阅读 · 0 评论 -
SQL从一个表查询数据插入/更新到另一个表
在应用中我们可能会遇到一些数据导入操作,如从一个表查询出数据插入到另外一个表,或从一个表查询出数据更新到另外一个表,这些操作一般都是一次性操作,针对一次性操作,效率只是第二位,第一位的是功能实现。这个操作既可以用于同一个数据库不同表之间,也可以用于不同数据库不同表之间。示例一: 从数据库DataBaseA的表LabMallClassXX中查询出数据插入到数据库DataBaseB的表LB原创 2018-01-05 09:44:41 · 1271 阅读 · 0 评论 -
SQLServer存储过程实现数据插入和更新
存储过程的功能非常强大,在某种程度上甚至可以替代业务逻辑层,接下来就一个小例子来说明,用存储过程插入或更新语句。1、数据库表结构 所用数据库为Sql Server2008。2、创建存储过程(1)实现功能:1)有相同的数据,直接返回(返回值:0); 2)有主键相同,但是数据不同的数据,进行更新处理(返回值:2); 3)没有数据,进行插入数据处理(返回值:1)。 根...原创 2018-02-26 08:38:45 · 29078 阅读 · 2 评论 -
Sqlserver对时间转换格式汇总
sql server2000中使用convert来取得datetime数据类型样式(全)日期数据格式的处理,两个示例:CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 /*varchar(10)表示日期输出的...原创 2018-04-18 10:18:18 · 11134 阅读 · 0 评论 -
SQL语句--删除掉重复项只保留一条
用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId)...原创 2018-04-20 13:32:28 · 22418 阅读 · 3 评论 -
看懂SqlServer查询计划
阅读目录开始SQL Server 查找记录的方法SQL Server Join 方式更具体执行过程索引统计信息:查询计划的选择依据优化视图查询推荐阅读-MSDN文章对于SQL Server的优化来说,优化查询可能是很常见的事情。由于数据库的优化,本身也是一个涉及面比较的广的话题, 因此本文只谈优化查询时如何看懂SQL Server查询计划。毕竟我对SQL Server的认识有限原创 2016-11-16 09:45:31 · 469 阅读 · 0 评论