counter
counter

随笔分类 -  MSSQL

摘要:存储过程时碰到的一个小问题:T-SQL数组DECLARE @fromType VARCHAR(16); BEGIN SET @fromType='0,1,2,'; DECLARE @PointerPrev INT; DECLARE @PointerCurr INT; DECLARE @@... 阅读全文
posted @ 2014-10-15 13:58 bfy 阅读(2515) 评论(0) 推荐(0)
摘要:转载:http://www.cnblogs.com/moss_tan_jun/archive/2010/08/23/1806861.html一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果。这些要求包括:执行计算与数学运算、转换数据、解析数值、组合值和聚合一个范围内的值... 阅读全文
posted @ 2014-10-14 09:40 bfy 阅读(170) 评论(0) 推荐(0)
摘要:转载:http://hi.baidu.com/gagahjt/item/fd081316450f05028ebde413/*一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。-----rtrim(@str)去掉 @str右边的字... 阅读全文
posted @ 2014-10-13 15:24 bfy 阅读(1301) 评论(0) 推荐(0)
摘要:转载: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 阅读全文
posted @ 2013-04-12 15:17 bfy 阅读(300) 评论(0) 推荐(0)
摘要:转载:http://www.cnblogs.com/xbf321/archive/2008/11/02/1325067.html1.EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理。以下所讲的都是第二种用法。下面先使用EXEC演示一个例子,代码1DECLARE @Tabl... 阅读全文
posted @ 2013-04-09 15:51 bfy 阅读(318) 评论(0) 推荐(0)
摘要:转:http://www.myexception.cn/sql-server/552909.html1.解释:应该是你的表体积很大,处理的时候费事,因为几乎所有数据库操作都需要加或多或少的锁,所以会超时。首先你可以使用select * from sys.sysprocesses where blocked<>0查查有哪些进程阻塞了。然后拿SPID,运行DBCC INPUTBUFFER(SPID)来检查是什么语句造成,找到你的那个删表进程之后,kill spid,杀掉。但是注意,有些操作由于阻塞时间过长,所以就算你kill掉,也要回滚同等的时间,这个你要注意,当出现这个情况时,可能要 阅读全文
posted @ 2013-04-08 15:11 bfy 阅读(423) 评论(0) 推荐(0)
摘要:转:http://zhidao.baidu.com/question/303518596.html1、模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like;对于like ‘%...%’(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低;另外,由于匹配算法的关系,模糊查询的字段长度越大,模糊查询效率越低。 解决办法:首先尽量避免模糊查询,如果因为业务需要一定要使用模糊查询,则至少保证不要使用全模糊查询,对于右模糊查询,即like ‘…%’,是会使用索引的;左模糊like ‘%...’无法直接使用索引,但可以利用reverse + function ... 阅读全文
posted @ 2013-04-08 14:13 bfy 阅读(2692) 评论(0) 推荐(1)
摘要:转:http://www.jzxue.com/shujuku/shujukuzonghe/200907/07-2332.html我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表drivingtable)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询,那就需要选择交叉表(intersectiontable)作为基础表, 阅读全文
posted @ 2013-04-08 14:01 bfy 阅读(184) 评论(0) 推荐(0)
摘要:1.转http://zhidao.baidu.com/question/328967258.html建分区表的话, 要看你有几个磁盘.如果只有一个磁盘的, 分区来分区去, 最后数据还是在 一个磁盘上面, 如果你有多个磁盘的.那么可以根据那个 自增 ID , 设置一个 计算列比如你有5个 磁盘, 那么 那个计算列 是 自增 ID % 5那么 当 计算列的数值 = 1 , 数据被存储到 磁盘1上面那么 当 计算列的数值 = 2 , 数据被存储到 磁盘2上面那么 当 计算列的数值 = 3 , 数据被存储到 磁盘3上面那么 当 计算列的数值 = 4 , 数据被存储到 磁盘4上面那么 当 计... 阅读全文
posted @ 2013-04-08 13:49 bfy 阅读(7294) 评论(0) 推荐(0)
摘要:主要是三个函数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 阅读全文
posted @ 2013-04-08 13:34 bfy 阅读(236) 评论(0) 推荐(0)
摘要:转载: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.. 阅读全文
posted @ 2013-04-02 10:36 bfy 阅读(745) 评论(0) 推荐(0)
摘要:1.比较工具:beyond compare或vs自带的数据->架构比较 进行筛选过滤。 阅读全文
posted @ 2013-03-28 10:57 bfy 阅读(243) 评论(0) 推荐(0)
摘要:转载: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 阅读全文
posted @ 2013-03-11 17:09 bfy 阅读(154) 评论(0) 推荐(0)
摘要: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) 值的每个唯一组合生成一个带有小计 阅读全文
posted @ 2012-09-04 15:50 bfy 阅读(206) 评论(0) 推荐(0)
摘要:1.cross join:记录数为表A*表B2.inner join:表A和表B相同的记录(比如根据条件ID相等来取)3.left join:表A的记录条数4.right join:表B的记录条数 阅读全文
posted @ 2012-07-18 17:37 bfy 阅读(149) 评论(0) 推荐(0)
摘要:转: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 阅读全文
posted @ 2012-07-17 16:27 bfy 阅读(1075) 评论(0) 推荐(0)
摘要:1.由于原表的记录数过多,从中查询数据虽然可以通过建立分区和索引,但原表要进行经常性插入数据,所以,现在要从原表定时读取符合条件的数据到新记录表中,用的时候直接从新记录表中读取数据,加快查询速度。2.通过两个角度来进行定时读取,一是每一个月的月末晚上十一点五十九,读取这一个月的数据,二是每一个周的周日晚上十一点五十九,读取该周的数据。3.主要是通过作业计划,然后配合存储过程完成。4.第一个角度(存储过程):CREATE PROCEDURE 存储过程名ASBEGIN SET NOCOUNT ON; INSERT INTO 新表( ProcessedInput, InputSpellin... 阅读全文
posted @ 2012-05-08 17:27 bfy 阅读(257) 评论(0) 推荐(0)
摘要: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... 阅读全文
posted @ 2012-05-07 10:14 bfy 阅读(292) 评论(0) 推荐(0)
摘要: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字符会认不出来. 阅读全文
posted @ 2012-04-27 14:55 bfy 阅读(126) 评论(0) 推荐(0)
摘要:1.记录有点大 1700万条数据 ,查询只建索引(非聚集)在页面上显示5秒左右,查询某年某月某机构输入的搜索排在前100的关键字,然后想建立分区。 结合存储过程,泛型,索引,分区。2.由于本人菜鸟级别,直接可视化: 右击需要分区的表,点击“存储”,即可看到“创建分区”:2.选择按照哪一列进行分区,我选的是时间列3。起个名字4.再起个名字5.选择时间段,以及按照什么方式分割这个时间段6.结束。7.后续:经测试,只建立分区需要16秒,比只建立索引慢了11秒,然后我两个都建立,变成了26秒。。。。 无语。 可能是建立的分区不合理。 继续弄。。8.经过尝试:只创建一个对分区方式字段的不是唯一的聚集.. 阅读全文
posted @ 2012-04-06 11:20 bfy 阅读(1416) 评论(0) 推荐(0)