随笔分类 -  SQL 技巧和优化

讨论如何高效的编写SQL语句。
摘要:缘起: 若干年前,刚到一家3C类的电商公司做DBA,到公司没几天,公司的CEO和研发总监,说现在要做个事情: 把IDC的数据库的数据,要同步一份到仓库,因单量大,仓库经常爆仓,仓库网络不好时,可以直接用同步的数据 记得当时CEO还特意,弄个讲座讲了公司如何处理单量爆仓 第一次做DBA,第一个月只是有 阅读全文
posted @ 2021-08-17 15:48 zping 阅读(763) 评论(0) 推荐(0) 编辑
摘要:1,每次查询的数据要有限制 2013年1月 产品独立数据库,由于多条SQL每次查询数据超过几千条,有些超过10万条数据未分页,造成应用服务器CPU有时持续100%。 2,禁止循环调用SQL 2011年5月 程序调用Sys_User查询,每分钟执行超过3千次,造成服务器CPU持续100% 3,禁止使用 阅读全文
posted @ 2019-09-17 13:33 zping 阅读(586) 评论(2) 推荐(0) 编辑
摘要:网上找了一圈对比库的工具,能手工生成差别的SQL的工具没有,改造了一下网上的sql 1, 获取字段名的类型 2 对比生成SQL,这个存储过程特定情况的,网友要用,需要手工改造一下 执行: exec p_comparestructure 'b_Online','b_Offline' 生成的SQL在Pr 阅读全文
posted @ 2018-11-26 15:38 zping 阅读(800) 评论(2) 推荐(0) 编辑
摘要:DECLARE @name NVARCHAR(200) DECLARE @path NVARCHAR(500) DECLARE @sql NVARCHAR(500) DECLARE @bsql VARCHAR(500) DECLARE @NowDay VARCHAR(20) --设置时间 SET @NowD... 阅读全文
posted @ 2018-02-05 16:16 zping 阅读(415) 评论(0) 推荐(0) 编辑
摘要:禁止修改表结构和加表 --记录加的表和字段 --禁用当前数据库中所有数据库级别的 DDL 触发器: DISABLE TRIGGER ALL ON DATABASE --禁用服务器实例中所有服务器级别的 DDL 触发器: DISABLE TRIGGER ALL ON ALL SERVER SELECT 阅读全文
posted @ 2016-04-15 10:06 zping 阅读(1906) 评论(0) 推荐(0) 编辑
摘要:dECLARE @tab TABLE(NAME varchar(100),value varchar(200)); INSERT INTO @tab EXEC('DBCC OPENTRAN WITH TABLERESULTS'); SELECT name,CAST(value AS DATETIME) startDate,getdate() currentDate ,DATEDIFF... 阅读全文
posted @ 2016-04-14 15:58 zping 阅读(2830) 评论(0) 推荐(0) 编辑
摘要:通常我们可以使用 sp_who2 我们希望更加简洁的信息,下面这个查询使用系统表sys.sysprocesses,以及sys.dm_exec_sql_text做OUTER APPLY. T-SQL是这样的: 上面可以查看正在执行的sql,他的等待事件 您可能注意到过滤了spid小于50的,这里有Te 阅读全文
posted @ 2016-04-14 15:46 zping 阅读(7093) 评论(0) 推荐(1) 编辑
摘要:CREATE TRIGGER [Object_Change_Trigger_DDL] ON DATABASEFOR ALTER_TABLE,DROP_TABLE,CREATE_TABLE,CREATE_INDEX,ALTER_INDEX, DROP_INDEX ASDECLARE @EventDa... 阅读全文
posted @ 2016-01-18 14:32 zping 阅读(1158) 评论(0) 推荐(0) 编辑
摘要:一台SQL Server的磁盘空间不够备份,想做日志传送,无法实现,在网上找了一个方法 原文URL: 删除访问权限: exec master..xp_cmdshell'net use \\svctag-65c883x\SH_Log /delete' declare @filename nvarcha 阅读全文
posted @ 2011-11-04 14:03 zping 阅读(1336) 评论(0) 推荐(0) 编辑
摘要:下车扫描,业务部门一直反应慢,不稳定,程序不是报黄页就是运行慢,严重影响师傅使用,估计师傅心里一直"很想我们"。 第一次优化 和同事一起看了程序业务逻辑,觉得应该将整个扫描逻辑过程放到存储过程,一可以避免程序在交互中的影响,二可以提高性能。 修改完后,由于需要读取Sequence,在存储过程中需要运 阅读全文
posted @ 2011-09-19 18:56 zping 阅读(1135) 评论(0) 推荐(0) 编辑
摘要:碰到一个需求,将一个列的数据: “122,123,145” 或者“122,123,145,”,变成多行,表值函数如下: Create FUNCTION transColS ( @id varchar(4000) ) RETURNS @st TABLE (id int) begin declare @ 阅读全文
posted @ 2011-06-23 14:36 zping 阅读(2248) 评论(0) 推荐(0) 编辑
摘要:构建表的上下级关系 有一个需求,表中数据没有关系,如同一个类型的,有多个出库时间。代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/----构建表的上下级关系--可以对同一个产品的,有层次关系--使用ROW_NUMBER(),来构建,最上上一级为0INSERTINTOStock([no]--编号,[quantity],[id],[productsysno],[intime],[parentid])selectno,id,productsysno, 阅读全文
posted @ 2011-01-27 13:45 zping 阅读(2259) 评论(0) 推荐(0) 编辑
摘要:最近在做一个报表,比较复杂,大体是一个主表a,子表b,子表c,子表d,统计这3个主表对应的数据。一开始我直接用left join 进行关联,结果统计的数据大了,结果发现,数据有重复,left join 关联时,如果u有2个,c有2个,b的数据会重复,这样数据会变多,在如果个,d也有的话,数据又有很多重复。 解决办法: 由于是想在一条sql里来实现这个功能,但是重复数据比较麻烦,使用distinct... 阅读全文
posted @ 2010-08-24 15:23 zping 阅读(26656) 评论(1) 推荐(4) 编辑
摘要:下面是我总结的SQL优化思路,也是对自己做了这几年系统和数据库优化的一个小结,不是很完整,写这个文档是应付领导的,现在共享出来,以后在慢慢更正吧! 数据库层面优化解决思路:当出现SQL查询比较慢问题在数据库层面,优化方法一般采用,减少访问次数,高效SQL,建立索引和建立表分区,好的数据库表设计。情况一:一个功能执行很慢,通过SQLProfile取出SQL语句。如果查看sql的各个表,如果查询的表... 阅读全文
posted @ 2009-07-15 15:48 zping 阅读(2584) 评论(0) 推荐(0) 编辑
摘要:EXCEL文件导入数据库的简便方法 嗨! 这个问题你可能有很多好方法. 不过多学一种不是坏事. 你用的方法可能是: 1. 存成txt文件, 再用sql*loader 2. 存成txt文件, 再用第三方工具(如pb, delphi, toad, pl/sql dev等)导入. sql*loader用起来费劲, 为了小小的需求, 装一个第三方工具麻烦. 看看我的方法. 比如文件中有id, na... 阅读全文
posted @ 2009-02-19 18:07 zping 阅读(1437) 评论(4) 推荐(0) 编辑
摘要:这段时间优化时,发现一个语句执行时间很长,效率很低,语句如下: select id,field015,field016,field017,field001,field020,field010,field014,field011,field013,field004,field018, field005,field007,field003,null ,requestid from ufv3a7... 阅读全文
posted @ 2008-10-05 11:04 zping 阅读(3812) 评论(2) 推荐(1) 编辑
摘要:在CSDN看到一篇贴子,是讨论一个SQL语句的写法:要求如下 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->表:tblDept(ID,DeptName) 表:tblSalary(ID,DeptID,Name,Salary) c... 阅读全文
posted @ 2008-10-01 11:06 zping 阅读(1745) 评论(0) 推荐(0) 编辑
摘要:今天碰到一个需求,将多行数据id值,变成一列,并更新到制定列中,在网上找了也没好的方法,最后自己写了一个实现,语句如下: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->create FUNCTION stTable ( @i... 阅读全文
posted @ 2008-09-26 16:36 zping 阅读(3530) 评论(2) 推荐(0) 编辑
摘要:今天看到一篇文章,关于讨论如何优化语句,原文如下: 作者总结贴: http://blog.csdn.net/wangd1121/archive/2008/06/23/2579435.aspx 网友讨论贴: http://topic.csdn.net/u/20080504/14/5c5866c3-8b91-45ef-ab17-f994f88f8e42.html ... 阅读全文
posted @ 2008-09-25 18:39 zping 阅读(727) 评论(0) 推荐(0) 编辑
摘要:从上海来到温州,看了前几天监控的sql语句和数据变化,发现有一条语句的io次数很大,达到了150万次IO,而两个表的数据也就不到20万,为何有如此多的IO次数,下面是执行语句: Code highlighting produced by Actipro CodeHighlighter (freewa 阅读全文
posted @ 2008-09-23 16:53 zping 阅读(16323) 评论(28) 推荐(3) 编辑