随笔分类 - MSSQL
摘要:存储过程时碰到的一个小问题:T-SQL数组DECLARE @fromType VARCHAR(16);	BEGIN SET @fromType='0,1,2,';	DECLARE @PointerPrev INT; DECLARE @PointerCurr INT; DECLARE @@...
        阅读全文
                
摘要:转载:http://www.cnblogs.com/moss_tan_jun/archive/2010/08/23/1806861.html一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果。这些要求包括:执行计算与数学运算、转换数据、解析数值、组合值和聚合一个范围内的值...
        阅读全文
                
摘要:转载:http://hi.baidu.com/gagahjt/item/fd081316450f05028ebde413/*一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。-----rtrim(@str)去掉 @str右边的字...
        阅读全文
                
摘要:转载:http://www.cnblogs.com/yanghaibo/archive/2010/06/04/1751405.htmlhttp://www.cnblogs.com/345563452/archive/2009/10/29/1592048.html在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例。12345DECLARE@TempTable table(UserID int, UserName nvarchar(50));insertinto@TempTable (UserID,UserName) values(1
        阅读全文
                
摘要:转载:http://www.cnblogs.com/xbf321/archive/2008/11/02/1325067.html1.EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理。以下所讲的都是第二种用法。下面先使用EXEC演示一个例子,代码1DECLARE @Tabl...
        阅读全文
                
摘要:转:http://www.myexception.cn/sql-server/552909.html1.解释:应该是你的表体积很大,处理的时候费事,因为几乎所有数据库操作都需要加或多或少的锁,所以会超时。首先你可以使用select * from sys.sysprocesses where blocked<>0查查有哪些进程阻塞了。然后拿SPID,运行DBCC INPUTBUFFER(SPID)来检查是什么语句造成,找到你的那个删表进程之后,kill spid,杀掉。但是注意,有些操作由于阻塞时间过长,所以就算你kill掉,也要回滚同等的时间,这个你要注意,当出现这个情况时,可能要
        阅读全文
                
摘要:转:http://zhidao.baidu.com/question/303518596.html1、模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like;对于like ‘%...%’(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低;另外,由于匹配算法的关系,模糊查询的字段长度越大,模糊查询效率越低。 解决办法:首先尽量避免模糊查询,如果因为业务需要一定要使用模糊查询,则至少保证不要使用全模糊查询,对于右模糊查询,即like ‘…%’,是会使用索引的;左模糊like ‘%...’无法直接使用索引,但可以利用reverse + function ...
        阅读全文
                
摘要:转:http://www.jzxue.com/shujuku/shujukuzonghe/200907/07-2332.html我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表drivingtable)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询,那就需要选择交叉表(intersectiontable)作为基础表,
        阅读全文
                
摘要:1.转http://zhidao.baidu.com/question/328967258.html建分区表的话, 要看你有几个磁盘.如果只有一个磁盘的, 分区来分区去, 最后数据还是在 一个磁盘上面, 如果你有多个磁盘的.那么可以根据那个 自增 ID , 设置一个 计算列比如你有5个 磁盘, 那么 那个计算列 是 自增 ID % 5那么 当 计算列的数值 = 1 , 数据被存储到 磁盘1上面那么 当 计算列的数值 = 2 , 数据被存储到 磁盘2上面那么 当 计算列的数值 = 3 , 数据被存储到 磁盘3上面那么 当 计算列的数值 = 4 , 数据被存储到 磁盘4上面那么 当 计...
        阅读全文
                
摘要:主要是三个函数1.DATEADD() 函数在日期中添加或减去指定的时间间隔。语法DATEADD(datepart,number,date)date参数是合法的日期表达式。number是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。datepart参数可以是下列的值:datepart缩写年yy, yyyy季度qq, q月mm, m年中的日dy, y日dd, d周wk, ww星期dw, w小时hh分钟mi, n秒ss, s毫秒ms微妙mcs纳秒ns2.DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。语法DATEPART(date
        阅读全文
                
摘要:转载:http://www.cnblogs.com/flyinghigher/archive/2010/08/12/1798008.html http://www.myexception.cn/sql-server/353508.html用的ADO.Net entity frameWork,也是实体数据的访问方式,等到保存数据(database.SaveChanges())时候,居然一小时没有写完,遂不解,仔细分析,按这样速度需要7个小时。于是换方式,用ADO.net 数据集方式进行,于是用数据集的update,也得三个小时的时间吧。接下来换sql语句的方式,每几万条数据的时候就执行一次s..
        阅读全文
                
摘要:1.比较工具:beyond compare或vs自带的数据->架构比较 进行筛选过滤。
        阅读全文
                
摘要:转载:http://blog.sina.com.cn/s/blog_5e5d98b50100dna3.html1.不要使用sa用户连接数据库2、新建一个public权限数据库用户,并用这个用户访问数据库3、[角色]去掉角色public对sysobjects与syscolumns对象的select访问权限4、[用户]用户名称-> 右键-属性-权限-在sysobjects与syscolumns上面打“×”5、通过以下代码检测(失败表示权限正确,如能显示出来则表明权限太高):DECLARE@Tvarchar(255),@Cvarchar(255)DECLARETable_Cursor
        阅读全文
                
摘要:1. ISNULL使用指定的替换值替换 NULL。语法ISNULL ( check_expression , replacement_value ) 2. ROLLUP ( )生成简单的 GROUP BY 聚合行以及小计行或超聚合行,还生成一个总计行。返回的分组数等于 <composite element list> 中的表达式数加一。例如,请考虑下面的语句。SELECT a, b, c, SUM ( <expression> )FROM TGROUP BY ROLLUP (a,b,c)会为 (a, b, c)、(a, b) 和 (a) 值的每个唯一组合生成一个带有小计
        阅读全文
                
摘要:1.cross join:记录数为表A*表B2.inner join:表A和表B相同的记录(比如根据条件ID相等来取)3.left join:表A的记录条数4.right join:表B的记录条数
        阅读全文
                
摘要:转:http://topic.csdn.net/u/20120628/17/cedc4661-39b6-42c9-9ba1-a1d8e3244142.htmlCREATE TABLE [dbo].[Tim_LinqTable]([Id] int PRIMARY KEY IDENTITY(1,1) NOT NULL,[Name] [varchar](50) NOT NULL,[Parent] int NOT NULL,)GOINSERT INTO [Tim_LinqTable] SELECT 'A',0 UNION ALLSELECT 'A1',1 UNION A
        阅读全文
                
摘要:1.由于原表的记录数过多,从中查询数据虽然可以通过建立分区和索引,但原表要进行经常性插入数据,所以,现在要从原表定时读取符合条件的数据到新记录表中,用的时候直接从新记录表中读取数据,加快查询速度。2.通过两个角度来进行定时读取,一是每一个月的月末晚上十一点五十九,读取这一个月的数据,二是每一个周的周日晚上十一点五十九,读取该周的数据。3.主要是通过作业计划,然后配合存储过程完成。4.第一个角度(存储过程):CREATE PROCEDURE 存储过程名ASBEGIN	SET NOCOUNT ON; INSERT INTO 新表( ProcessedInput, InputSpellin...
        阅读全文
                
摘要:1.存储过程:CREATE PROCEDURE hlsj	(@month int,	@year int,	@CityId int)ASBEGIN	SET NOCOUNT ON;select top 100 count(ProcessedInput) as sl,ProcessedInput from 表名 where [month]=@month and [year]=@year and CityId=@CityId group by ProcessedInput order by sl descENDGO2.数据绑定,显示: SqlParameter[] para = new Sql...
        阅读全文
                
摘要:1.上传图片 必须要先上传成功,才能写进数据库中的路径。2.转载:http://www.cnblogs.com/EasyLive2006/archive/2009/01/13/1375182.html启动SQL Server 2008Management Studio工具菜单----选项----Designers(设计器)----阻止保存要求重新创建表的更改 取消勾选即可。3.@sql=N'q',这里的N是什么意思,加与不加有什么区别:用来支持UNICODE字符的,不加的话,如果sql语句中有Unicode字符会认不出来.
        阅读全文
                
摘要:1.记录有点大 1700万条数据 ,查询只建索引(非聚集)在页面上显示5秒左右,查询某年某月某机构输入的搜索排在前100的关键字,然后想建立分区。 结合存储过程,泛型,索引,分区。2.由于本人菜鸟级别,直接可视化: 右击需要分区的表,点击“存储”,即可看到“创建分区”:2.选择按照哪一列进行分区,我选的是时间列3。起个名字4.再起个名字5.选择时间段,以及按照什么方式分割这个时间段6.结束。7.后续:经测试,只建立分区需要16秒,比只建立索引慢了11秒,然后我两个都建立,变成了26秒。。。。 无语。 可能是建立的分区不合理。 继续弄。。8.经过尝试:只创建一个对分区方式字段的不是唯一的聚集..
        阅读全文
                
 
                    
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号