随笔分类 -  SQL Server

摘要:1、统计相应字段的数据情况(如:几年没更新,无数据等情况) 2、确认产品逻辑已无效(产品经理邮件确认) 3、数据备份 4、将数据清空(置为0或空) 5、测试环境中删除引用页面 6、修改定时程序,存储过程 7、测试通过后发布 8、删除约束,重建索引,如有视图依赖也需要删除 9、删除字段 注:4、5、6 阅读全文
posted @ 2016-08-25 10:07 Hydor 阅读(341) 评论(0) 推荐(0) 编辑
摘要:A库存储过程: 同一台服务器实例,A,B两个数据库, 在B库的存储过程中,调用A库的存储过程 B库: A,B两个数据库,不在同一台服务器实例, 在B库的存储过程中,调用A库的存储过程 B库: 在跨服务器调用时,所使用OPENDATASOURCE 遭遇如下信息时 消息 15281,级别 16,状态 1 阅读全文
posted @ 2016-08-04 16:51 Hydor 阅读(3959) 评论(0) 推荐(0) 编辑
摘要:WHY? IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢? 1、效率低 可以参看我之前遇到的一个例子([小问题笔记(九)] SQL语句Not IN 效率低,用 NOT EXISTS试试) 2、容易出现问题,或查询结果有误 (不能更严重的缺点) 以 IN 为例。建两个表:test1 和 阅读全文
posted @ 2016-04-14 16:19 Hydor 阅读(59942) 评论(5) 推荐(5) 编辑
摘要:一、什么情况下需要重建索引 1、碎片过多(参考值:>20%) 索引碎片如何产生,请移步至《 T-SQL查询高级—SQL Server索引中的碎片和填充因子》 2、填充度过低(参考值:<75%) 导致填充度过低的可能原因:①.有删除 ②.有分区表 ③.聚集索引不是数字 ④.数据百万以内,比较少 二、重 阅读全文
posted @ 2016-03-08 15:37 Hydor 阅读(2382) 评论(0) 推荐(1) 编辑
摘要:1、查询CPU开销大的语句 SELECT top 100 total_worker_time/execution_count AS avg_cpu_cost, plan_handle, execution_count, (SELECT SUBSTRING(text, statement_start_ 阅读全文
posted @ 2016-03-04 13:22 Hydor 阅读(367) 评论(0) 推荐(0) 编辑
摘要:第一步 DBCC DROPCLEANBUFFERS 清除缓冲区 DBCC FREEPROCCACHE 删除计划高速缓存中的元素 从缓冲池中删除所有清除缓冲区。要求具有 sysadmin 固定服务器角色的成员身份。 第二步 SET STATISTICS TIME ON SET STATISTICS I 阅读全文
posted @ 2016-03-04 10:57 Hydor 阅读(236) 评论(0) 推荐(0) 编辑
摘要:(自己总结,有误请不吝赐教)1、如果触发频率高,占用内存,降低数据访问速度2、相对不灵活,一旦触发马上执行,不能排除特殊情况3、一定程度上打乱代码结构,相关的代码都需要特别注释,否则造成阅读和维护上的困难4、过度使用也会造成数据库的维护困难所以,那些非常重要,对正确性、安全性特别敏感的数据,再考虑添... 阅读全文
posted @ 2015-10-10 10:28 Hydor 阅读(2596) 评论(0) 推荐(0) 编辑
摘要:DECLARE @UserId varchar(50) DECLARE My_Cursor CURSOR --定义游标FOR (SELECT userid FROM User) --查出需要的集合放到游标中OPEN My_Cursor; --打开游标FETCH NEXT FROM My_Cursor... 阅读全文
posted @ 2015-05-26 10:08 Hydor 阅读(9200) 评论(0) 推荐(0) 编辑
摘要:起因是如此简单的一句sqlDELETE FROM tablename WHERE timekey=20150416提示:Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。提供几种解决思路:1、检查WHERE条件中字段是否已建索引2、检查是否被其他表引用,引用表外键字段上是否已建索... 阅读全文
posted @ 2015-04-16 18:50 Hydor 阅读(1097) 评论(0) 推荐(0) 编辑
摘要:写法:假装有个表Shop,其中有一列ShopName,取100000到100050条数据。ROW_NUMBER 的写法SELECT * FROM(SELECT ShopName , ROW_NUMBER() OVER(ORDER BY ShopName) as RFROM Shop) tWHERE... 阅读全文
posted @ 2015-04-09 15:30 Hydor 阅读(1903) 评论(0) 推荐(2) 编辑
摘要:一个字段里面有一些数据是NULL是很讨厌的,写查询麻烦不说,最重要的is null 或者is not null都是不能命中索引的,会导致全表扫描啊。 所以对于一个已经存在NULL的字段,有时间的话最好改造改造。 方法1、为字段添加默认值约束,更新现有NULL值。 此方法简单粗暴,容易引起锁,线上数据 阅读全文
posted @ 2015-03-19 10:10 Hydor 阅读(12639) 评论(0) 推荐(0) 编辑
摘要:项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select * from t1 where phone not in (select phone from t2)直接就把我跑傻了。。。十几分钟,检查了一下 phone在两个表都建了索引,字... 阅读全文
posted @ 2015-02-12 18:30 Hydor 阅读(8600) 评论(0) 推荐(5) 编辑
摘要:读取所有字段,自然排序declare @fields varchar(max) Select @fields=ISNULL(@fields,'')++name+',' from syscolumns Where ID=OBJECT_ID('contact') order by colorderpr... 阅读全文
posted @ 2015-02-04 14:58 Hydor 阅读(583) 评论(0) 推荐(1) 编辑
摘要:铺垫知识点:数据库存储本身是无序的,建立了聚集索引,会按照聚集索引物理顺序存入硬盘。既键值的逻辑顺序决定了表中相应行的物理顺序多数情况下,数据库读取频率远高于写入频率,索引的存在 为了读取速度牺牲写入速度页 为最小单位 8kb区物理连续的页(8页)的集合内部碎片 数据库页内部产生的碎片,外部反之碎片... 阅读全文
posted @ 2015-02-04 13:44 Hydor 阅读(14687) 评论(2) 推荐(3) 编辑
摘要:这里用到SQL Server内置的函数 HashBytes().select HashBytes('MD5','bubu')select HashBytes('SHA1','bubu')以MD5为例,‘bubu’加密之后的MD5应是用刚才的SQL查询结果是:返回结果是VarBinary类型(以 0x... 阅读全文
posted @ 2014-10-22 14:15 Hydor 阅读(2391) 评论(0) 推荐(0) 编辑
摘要:正常情况下写的连接字符串:connStr = "Data Source=127.0.0.1;DataBase=Hydor;UID=***;PWD=***;Pooling=true;Min Pool Size=1;Max Pool Size=20;";有时我们还要用参数拼连接字符串:connStr = "Data Source=" + myDataSource + ";DataBase=" + myDataBase + ";UID=" + userID + ";PWD=" + dbPassword 阅读全文
posted @ 2014-03-14 20:02 Hydor 阅读(4701) 评论(0) 推荐(1) 编辑
摘要:有一个GridView1 用DataReader读数据库信息 SqlConnection sqlCon = new SqlConnection(); sqlCon.ConnectionString = "Data Source=.;DataBase=Bu;UID=sa;PWD=密码;"; //连接字符串 SqlCommand cmd = new SqlCommand("select * from tableA",sqlCon); //sql语句或存储过程 sqlCon.Open(); ... 阅读全文
posted @ 2014-03-14 02:21 Hydor 阅读(1105) 评论(0) 推荐(0) 编辑
摘要:数据库名叫:Bu 有个表:A里面有一列:ID需要引用using System.Data.SqlClient;代码部分如下: SqlConnection sqlCon=new SqlConnection() ; sqlCon.ConnectionString = "Data Source=.;DataBase=BU;Uid=sa;PWD=密码"; //.表示本机 也可以IP SqlCommand sqlStr= new SqlCommand("select ID from A", sqlCon); ... 阅读全文
posted @ 2014-03-14 01:47 Hydor 阅读(331) 评论(0) 推荐(0) 编辑
摘要:一、存储的对比DataReader 从数据库中检索【只读】数据流,存在客户端网络缓冲区,直到Read方法访问它们。DataAdapter 表示一组SQL命令和数据库连接,用于填充DateSet和【更新】数据源DataSet 存在内存中的数据缓存,可包含多个DataTableDataTable 内存中的数据表二、优缺点优点缺点DataReader占内存小,只读需要独占连接,只读DataAdapter一次性读取,可以增删改查占内存,数据量大不适合三、搭配使用DataReader与SqlCommand搭配使用。可向DataTable里存入数据。DataAdapter 与 DataSet搭配使用。Da 阅读全文
posted @ 2014-01-17 03:27 Hydor 阅读(710) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示