摘要: 不知道你们遇到过没有,一些SQL语句什么优化方法都用过了,查询速度就是快不起来,后来把Inner Join改成Left Join,奇迹发生了。呆会我来举个例子说明。 阅读全文
posted @ 2013-09-18 16:49 超缘 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 理解扫描和查找以新华字典为例,找一个字,如果用扫描的方式,就是一页一页地翻过去。查找就是知道这个字的拼音,直接跳跃式的翻到相应的页面(翻几次)。或者不知道拼音就在前面的目录里面按部首、笔画查找,然后再根据提示的页码翻到相应的页数。--- 聚集索引查找 – 非聚集索引查找(可能存在书签查找)理解聚集索引和非聚集索引没有聚集索引的表是一个堆表,有聚集索引的表是一个聚集索引表。因为聚集索引和数据是混在一起的,数据是聚集索引的一部分。索引是一个平衡树结构(根结点、中间结点和叶子结点)。如果是聚集索引表,数据就放在聚积索引的叶子结点中。非聚集索引查找和书签查找因为一个表只有能创建一个聚集索引,而实际情况 阅读全文
posted @ 2013-09-18 16:28 超缘 阅读(672) 评论(0) 推荐(1) 编辑
摘要: 养成写注释的习惯。比如存储过程,我们不仅在创建存储过程的时候写注释,而且是以后的开发版本中修改了存储过程,那么也要写注释。存储过程不要以sp_开头,因为系统存储过程都是以sp_开头的。而且在执行sp_开关的存储过程时数据库引擎首先在master数据库中查找这个存储过程,如果找不到,再去其它数据库查找。-- 创建一个sp_开头的存储过程IF OBJECT_ID('[dbo].[sp_executesql]') IS NOT NULL DROP PROCEDURE [dbo].[sp_executesql];CREATE PROC [dbo].[sp_executesql]AS S 阅读全文
posted @ 2013-09-18 16:18 超缘 阅读(199) 评论(0) 推荐(0) 编辑
摘要: /*=================================== --author: fan --Date: 2008-08-08 --Description: 定期对表的索引进行重建操作 --注意:要观察索引的情况,对于不经常用的索引可以删除。 --注意:小表字段可以不用创建索引。 ===========================================*/ CREATE PROCEDURE [dbo].[Y_RebuildIndex]AS BEGIN DECLARE @t TABLE(id INT IDENTITY(1,1),TableName VARCHAR(20 阅读全文
posted @ 2013-09-18 16:14 超缘 阅读(207) 评论(0) 推荐(0) 编辑
摘要: -- ========== MSSQL2005 =====================USE mastergoDECLARE @dbname sysname;SET @dbname='BSV100';-- 清空日志EXEC ('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG');-- 截断事务日志:EXEC ('BACKUP LOG ['+@dbname+'] WITH NO_LOG');-- 收缩数据库文件(如果不压缩,数据库的文件不会减小EXEC ('DBCC 阅读全文
posted @ 2013-09-18 15:33 超缘 阅读(220) 评论(0) 推荐(0) 编辑
摘要: /*==================== 资源占用锁 ===============如果发现某个资源频繁的发生被占用的情况(放置锁)更新锁过多的发生1.是否有很多数据被频繁的修改2.是否缺少合适的索引3.是否索引碎片过大-- 查看锁的类型SELECT * FROM master.dbo.spt_values WHERE [type] = 'L';*/USE test -- 要观察的数据库goSELECTrequest_session_id AS sp_id, COALESCE(s.name + '.' + o.name + ISNULL('.' 阅读全文
posted @ 2013-09-18 15:28 超缘 阅读(1000) 评论(0) 推荐(0) 编辑
摘要: USE mastergo/*======= 死锁经常与正常阻塞混淆 ========== 死锁是无期限的等待和阻塞,所以数据库引擎会提前判断而自动进行处理。而阻塞是当一个事务锁定了另一个事务需要的资源,第二个事务必须等待锁被释放。默认情况下,SQL Server 事务不会超时(除非设置了 LOCK_TIMEOUT)。所以表现为第二个事务被长久阻塞,而不是被死锁。故需要人为发现和处理。======== 以下显示被长久阻塞的线程列表 ==========================*/SELECT DB_NAME(a.[dbid]) AS [所在的数据库],a.spid AS [等待资源的线程 阅读全文
posted @ 2013-09-18 15:23 超缘 阅读(1354) 评论(0) 推荐(0) 编辑