SQL Profiler trace使用方法
SQL Server Profiler的使用方法可以见这篇Sql2005性能工具(SQL Server Profiler和数据库引擎优化顾问)使用方法详解 昨日,跟踪了某个程序的sql执行,然后打开trc(SQL Server Profiler的跟踪文件)一看,2分钟就记录了800条数据, 绝大多数都不是我想要的数据,这个工具也没有筛选功能,要从这么多数据中找出我想要的,还真是麻烦。 这里分享下别人的经验 1.如何更有效的跟踪呢 应用程序的连接字符串里加上“Application Name”/“app”键,这样,在新建跟踪时, 可以在”列筛选器”里根据ApplicationName进行过滤(如...
SQL Server 2005数据同步
数据同步是我们在开发的过程中常遇到的问题,一般我们可以使用复制的办法,复制是将一组数据或数据库对象从一个数据库复制和分发到另外一个数 据库,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。使用复制,可以在局域网和广域网上将数据分发到不同位置,可以确保分布在不同地点 的数据自动同步更新,从而保证数据的一致性。 在SQL Server 2005中,复制主要需要有发布服务器、分发服务器和订阅服务器,源数据所在的服务器是发布服务器,负责发表数据。发布服务器把要复制的数据或对象发...
SQL索引优化 索引示例
1. 建表: create table site_user ( id int IDENTITY(1,1) PRIMARY KEY, [name] varchar(20), code varchar(20), date datetime ) 2. 插入8万条数据 declare @m int set @m=1 while @m<80000 begin INSERT INTO [demo].[dbo].[site_user] ( [name] ,[code],date) VALUES ('name'+CAST(@m AS VARCHAR(20)) ,'code'+CAST(@m AS VARCHAR(20)),GETUTCDATE()) select @m=@m+1 END --小技巧:推荐使用类似sqlassist的工具来提高敲写sql语句的速度 3. 设...
SQLServer与Oracle数据同步
我们的项 目使用SQLServer2005进行开发,而且项目中要用到Oracle数据库中的数据,怎么实现多数据库的操作呢?一般来说方案有以下几种。 1.分别建立链接对数据库进行操作,SQLServer可以用ADO.NET,操作Oracle可以用OLEDB或者用System.Data.OracleClient(需要添加引用才能用) 这种方案的优点就是简单,各自写各自的数据库操作代码,缺点就是不能将两个数据库中的表直接进行联合查询,链接Oracle的每台机器必须安装OracleClient才可以使用 2.使用同义词操作Oracle数据库。 这 种方法的具体操作我在以前的文章中已经...
SQL Server 2008数据库分区表
用SQL Server数据库做一个网游发号系统。功能是将厂商给的N个卡号导入到库里在固定的时间为用户提供领取。这个系统最大的亮点应该就是这个N的不确定性,不同的厂商提供的卡数量不同,N可能是10也可能是10W。经过分析得表结构如下图: 现在做一个简单的测试,在这个表里插入2000W条数据,然后根据ActivityID随机查询一条数据出来,居然需要4秒多。。于是决定尝试用分区表来优化查询效率。 分区函数如下: CREATE PARTITION FUNCTION [Card_PF](int) AS RANGE L...
游标的使用方法和效率
重点:游标对于大数据量是低效率的 重点: 1、 游标的属性 2、 Current of cursor 游标的当前记录 1. 游标:游标是select之后的结果集。我们可以借助游标将结果集每一条赋值到结果集中, 然后对数据进行逐条控制 2. 游标的属性解析 2.1. %FOUND : 布尔型的判断,有数据可取为true,没有则为false 2.2. %NOTFOUND:与found正好相反 2.3. %ISOPEN:判断是否已经打开游标 2.4. ROWCOUNT:判断游标内的数据有多少条 1、游标应用的案例 declare cursor myc...
group by 和 having区别
sql中的group by 和 having 用法解析 --sql中的group by 用法解析: -- Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。 --它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 --注意:group by 是先排序后分组; --举例子说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术 select DepartmentID as '部门名称', COUNT(*) as '个数' from BasicDepartment group by...
SQL SERVER获取星期
-------------------------------------------------------------- --FUNCTION Name:udf_WeekDayName --作者:数据库之家 --FUNCTION :SQL SERVER获取星期 ---------------------------------------------------------- CREATE FUNCTION [dbo].[udf_WeekDayName] ( )RETURNS @WeekDayName TABLE([Id] INT,[WeekDayName] NVARCHAR(15))ASBEGIN INSERT INTO @WeekDayName ([Id],[WeekDayName]) VALUES (0,'Saturday'),(1,'Sunday'),(2,'Monday'),(3,'Tuesday'),(4,'Wednesday'),(5,'Thursday'),...
复制数据库表
下面介绍两种复制数据库表的方法 这可以用在备份表的时候 1.在没有目标表的情况下使用 需要注意的是, 这种方法可以自动的创建表,但是不会创建主键. 例如 select 列 into 目标表名 from 源表名 select * into wx from zl 2.在目标表已经存在的情况下使用 这种情况下目标表最好取消自动增长列的 自动增长 ,不会就引起错误. 例如 insert into 表(列) select (列) from 表 select into wx(w,x) select z,l from zl
SQL中group by的用法
首先先贴两条sql,大家看看有啥区别 view plain select * from all_txt A where id=(SELECT id from all_txt view plain where A.key_value = key_value ORDER BY release_time DESC limit 1); view plain select * from (select *,max(release_time) as timea view plain from all_txt group by key_value order by release_time desc) a order by timea desc; 然后说明下表的重要字段为三个id,key_value,release_time 作用是取每个相同key_value中release_time最新的...