数据库开发管理
文章平均质量分 70
liangCK
Out of difficulties,make miracles.
展开
-
写有效率的SQL查询(I)
大型系统的生产环境,一般情况下,我们评价一条查询是否有效率,更多的是关注逻辑IO(至于为什么,回头补一篇)。我们常说,“要建彪悍的索引”、“要写高效的SQL”,其实最终目的就是在相同结果集情况下,尽可能减少逻辑IO。1.1 where条件的列上都得有统计信息。没统计信息SQLServer就无法估算不同查询计划开销优劣,而只能采用最稳妥的Scan(不管是table sca转载 2008-07-21 21:52:00 · 1302 阅读 · 0 评论 -
SQL Server XML应用实例
/* Author: liangCK 小梁 Date : 2008-11-19*/ 示例一: 如在一个10/20/30/50/40/90的字符串当中.需要得到前N个”/”的字串,或得到前N个”/”的和.如上的字符串.如果得到前3个”/”的字符串.也就是10/20/30/,要得到前3个”/”的数的和,就是60.这样的操作在以前通常会写一个函数,然后循环记数得到原创 2008-11-19 15:23:00 · 2461 阅读 · 1 评论 -
字符串中数据的运算和统计
问题:数据表如下 cate values dates A1 12.32,15.6,14.5,45.00,78.12,23.45 2006-04-01 A2 14.56,67.23,45.12,23.1,34.67,56.98原创 2009-02-21 18:11:00 · 1974 阅读 · 2 评论 -
重写ISNUMERIC函数
declare @test table(strings varchar(50)) Insert into @test Select 12d3 union all Select 87234.45 union all Select $123,456.00 union all Select 12 union all Select c原创 2009-03-05 14:07:00 · 1918 阅读 · 0 评论 -
导出数据库的视图,函数,存储过程以前触发器
CREATE PROC dbo.usp_OutObjects @dbname sysname, @Path NVARCHAR(1024)ASBEGIN DECLARE @viewPath NVARCHAR(1024), @functionPath NVARCHAR(1024), @procedurePat原创 2009-04-19 18:57:00 · 2972 阅读 · 2 评论 -
每N条记录一个Worksheet,导出同一个Workbook中
/*Author : 梁嘉辉Date : 2009-06-15Function : 分Sheet导出同一Excel工作薄Comment : 使用或转载请保留此信息*/ ---------------------------------------------------------------------创建存储过程-原创 2009-06-16 20:09:00 · 2354 阅读 · 1 评论 -
SQL 2005 + CLR 压缩文件夹
//新建一个数据库项目,并新建一个类.Compress.cs文件内容如下:using System;using System.IO;using System.IO.Compression;using System.Text;using System.Collections; namespace CompressProject{ public class原创 2009-07-13 11:23:00 · 1775 阅读 · 1 评论 -
非聚集索引与ORDER BY排序的问题
写写如果SELECT列表中,使用*和不使用*的索引使用情况,如果错了,希望各位改正。例子以Northwind.dbo.Orders表为例,因为对这个表比较熟悉。先创建出示例数据库:CREATE DATABASE Test;GOUSE TestGO--将Northwind.dbo.Orders表的数据导到我们的测试数据库当中.SELECT * INTO dbo.Orders FROM Northw原创 2009-09-11 15:22:00 · 2826 阅读 · 2 评论 -
SQL Server 2005分区表——分区切换
本文演示了SQL Server 2005 分区表分区切换的三种形式:1. 切换分区表的一个分区到普通数据表中:Partition to Table;2. 切换普通表数据到分区表的一个分区中:Table to Partition;3. 切换分区表的分区到另一分区表:Partition to Partition。并指出了在分区表分区切换过程中的注意事项。 -- 创建分区函数create p转载 2009-01-08 12:37:00 · 4244 阅读 · 0 评论 -
SQL Express自动备份
--第一步--在master库中建立一个备份数据库的存储过程.USE master GOCREATE PROC p @db_name sysname, --数据库名 @bk_path NVARCHAR(1024) --备份文件的路径 AS IF ISNULL(@db_name,)=原创 2008-11-16 15:53:00 · 5562 阅读 · 10 评论 -
查每个分组前N条记录
----------------------------------- Author: liangCK 小梁-- Title : 查每个分组前N条记录-- Date : 2008-11-13 17:19:23--------------------------------- --> 生成测试数据: #TIF OBJECT_ID(tempdb.dbo.#T原创 2008-11-13 17:35:00 · 2177 阅读 · 2 评论 -
写有效率的SQL查询(III)
先说说这些误区。所谓“误区”,有一些是新手很容易犯的错误或者很容易忽略的问题,另外一些,则是像“耗子吃了盐会变成蝙蝠”一样,让我们从小就认为是正确的事情。如下:1、 表上不管用得着用不着,都加个聚集索引。我们知道,表以两种方式组织物理存储:有聚集索引的“聚集表”;没有聚集索引的“堆”。在聚集表中,数据行按照聚集索引的顺序存储(这也是为啥一张表最多只能有一个聚集索引的原因);堆转载 2008-07-21 21:56:00 · 1108 阅读 · 1 评论 -
写有效率的SQL查询(IV)
本文主要介绍写SQL的另外两个误区:1、 存储过程中使用局部变量而不使用参数变量(就是存储过程输入参数)做where条件2、 查询条件中类型不匹配这两种错误都是非常非常容易犯且非常发指的错误,特别是2,太多次见过了。 一、关于存储过程使用局部变量,我们举例说明。有这么一张表存储过程:create proc test( @id int)as转载 2008-07-21 21:57:00 · 1084 阅读 · 0 评论 -
写有效率的SQL查询(V)
先站在应用程序的角度说说它们的不同。1、 直接拼SQL就像大家了解的那样,直接拼SQL带来了SQL注入攻击,带来了拼时些许的性能损失,但是拼不用添加SqlParameter,会少写很多代码——很多人喜欢直接拼,也许就因为这点。这种做法会把你拼好的SQL原样直接发送到DB服务器去执行。(注意类似”exec yourproc ‘param1’, 12”的语句不在此范畴,这是调用存储过转载 2008-07-21 21:58:00 · 1293 阅读 · 0 评论 -
写有效率的SQL查询(II)
上回我们说到评估一条语句执行效率主要看逻辑IO(啥是逻辑IO,啥是物理IO见联机文档),这次我们继续。我们先说说,返回多行结果时,为什么SQLServer有时会选择index seek,有时会选择index scan。以nonclustered index为例说明。像所有的索引B树一样,非聚集索引树也包括完全由索引数据组成的根节点和中间级节点;但是和聚集索引树不同的是,聚集索引转载 2008-07-21 21:55:00 · 1163 阅读 · 0 评论 -
写有效率的SQL查询(VI)
我们先看NestedLoop和MergeJoin的算法(以下为引用,见RicCC的《通往性能优化的天堂-地狱 JOIN方法说明》):==================================NestedLoop: foreach rowA in tableA where tableA.col2=? { search rowsB from tableB where转载 2008-07-21 21:58:00 · 1285 阅读 · 0 评论 -
全文索引同义词搜索没作用的问题
--显示版本信息SELECT @@VERSION;GOCREATE TABLE FullText_Test( ID int IDENTITY(1,1), DATA nvarchar(max), --如果这里使用varchar(max),下面的插入也不带N,那CONTAINS得不到任何记录 CONSTRAINT PK_ID_FullText_Test PRIMARY KEY(原创 2008-10-17 10:05:00 · 2087 阅读 · 1 评论 -
SQL 2005修改系统表
SQL 2005 修改系统表方法。 在 SQL Server 2000 中修改系统表的方法大部分人都知道,介绍如何在 SQL 2005 中修改系统表的资料目前还比较少,虽然微软不赞成修改系统表,而且也把修改系统表的代码隐藏起来了。但微软一贯喜欢给自己留个小后门。我是这么想的:最先知道如何修改 SQL 2005 系统表的人只有微软 SQL Server 2005 的设计、开发者。于是就到原创 2008-10-07 16:23:00 · 7159 阅读 · 0 评论 -
利用Log Explorer将你已经delete,truncate,drop过的数据进行恢复
原地址: http://blog.csdn.net/jiangopen/archive/2004/07/14/41684.aspx作者:jiangopen 了解数据库的人都知道,数据库的日志记录了我们所有对数据库的操作动作,正是有了日志才使得事务的回滚成为可能。也就是说日志可以让所有的动作可逆,尽管我们知道这个原理,但是很少有人去分析sqlserver的日志,然后生成逆向的脚本,将已经执行转载 2008-10-21 17:11:00 · 1595 阅读 · 0 评论 -
SQL 2005加密数据方法
--Author: liangCK 小梁 --示例一,使用证书加密数据. --建立测试数据表 CREATE TABLE tb(ID int IDENTITY(1,1),data varbinary(8000)); GO --建立证书一,该证书使用数据库主密钥来加密 CREATE CERTIFICATE Cert_Demo1 WITH SUBJ原创 2008-10-10 17:16:00 · 4119 阅读 · 1 评论 -
批量导出存储过程
--问题描述: 将某个数据库下的所有存储过程生成一个对应名称的脚本文件. CREATE PROC p @dbname sysname, --数据库名 @bkpath nvarchar(1024)=D:/ --生成脚本的路径名AS IF ISNULL(@dbname,)= --传入的@dbname参数为空时,表示生成原创 2008-11-07 19:47:00 · 3287 阅读 · 0 评论 -
SSSI导EXCEL数据常见问题一
在使用SQL SERVER将EXCEL导入到数据库中的时候.经常会发生一些问题.会让我们有些感觉到莫名其妙.今天在论坛上.一个朋友在使用SSIS将EXCEL导入到SQL SERVER的数据库内的时候.发生了这个错误:Excel 源 [1]] 错误: 输出“Excel 源输出”(9) 上的输出列“Description 3”(546) 出错。返回的列状态是:“文本被截断,或者一个或多个字符在原创 2009-09-15 17:10:00 · 4845 阅读 · 2 评论