2008年10月07日
在 SQL Server 2000 中修改系统表的方法大部分人都知道,介绍如何在 SQL 2005 中修改系统表的资料目前还比较少,虽然微软不赞成修改系统表,而且也把修改系统表的代码隐藏起来了。但微软一贯喜欢给自己留个小后门。我是这么想的:最先知道如何修改 SQL 2005 系统表的人只有微软 SQL Server 2005 的设计、开发者。于是就到 msdn 中逛逛,最后终于找到了 SQL 2005 修改系统表的方法:)
阅读全文>
发表于 @ 2008年10月07日 16:23:00|评论(loading...)|收藏
2008年07月21日
先站在应用程序的角度说说它们的不同。1、 直接拼SQL就像大家了解的那样,直接拼SQL带来了SQL注入攻击,带来了拼时些许的性能损失,但是拼不用添加SqlParameter,会少写很多代码——很多人喜欢直接拼,也许就因为这点。这种做法会把你拼好的SQL原样直接发送到DB服务器去执行。(注意类似”exec yourproc ‘param1’, 12”的语句不在此范畴,这是调用存储过程的一种方式)阅读全文>
发表于 @ 2008年07月21日 21:58:00|评论(loading...)|收藏
我们先看NestedLoop和MergeJoin的算法(以下为引用,见RicCC的《通往性能优化的天堂-地狱 JOIN方法说明》):阅读全文>
发表于 @ 2008年07月21日 21:58:00|评论(loading...)|收藏
本文主要介绍写SQL的另外两个误区:1、 存储过程中使用局部变量而不使用参数变量(就是存储过程输入参数)做where条件2、 查询条件中类型不匹配阅读全文>
发表于 @ 2008年07月21日 21:57:00|评论(loading...)|收藏
先说说这些误区。所谓“误区”,有一些是新手很容易犯的错误或者很容易忽略的问题,另外一些,则是像“耗子吃了盐会变成蝙蝠”一样,让我们从小就认为是正确的事情。如下:阅读全文>
发表于 @ 2008年07月21日 21:56:00|评论(loading...)|收藏
上回我们说到评估一条语句执行效率主要看逻辑IO(啥是逻辑IO,啥是物理IO见联机文档),这次我们继续。
我们先说说,返回多行结果时,为什么SQLServer有时会选择index seek,有时会选择index scan。
阅读全文>
发表于 @ 2008年07月21日 21:55:00|评论(loading...)|收藏
大型系统的生产环境,一般情况下,我们评价一条查询是否有效率,更多的是关注逻辑IO(至于为什么,回头补一篇)。我们常说,“要建彪悍的索引”、“要写高效的SQL”,其实最终目的就是在相同结果集情况下,尽可能减少逻辑IO。阅读全文>
发表于 @ 2008年07月21日 21:52:00|评论(loading...)|收藏
2008年04月21日
要写一个存储过程,统计一段时间内各连续ID的价格合计,得到以下结果:
比如 2008-1-1到2008-1-3,得到的结果为:
ID_Range Totoal_Price
1-3 114
6-7 42
如果统计的是2008-1-1到2008-1-2,得到的结果是
ID_Range Totoal_Price
1-3 114
6 10 阅读全文>
发表于 @ 2008年04月21日 22:52:00|评论(loading...)|编辑|收藏
发现有很多人刚开始学习编程的时候,并不喜欢数据库(当然我也是)。认为数据库只是用来保存数据罢了,没必要去深入学习研究。但慢慢去学习下去,会觉得其实数据库真的很有趣而且也很重要。涉及到你关心的数据的安全、维护与管理、备份造作等等,如果能充分有效地使用好数据库,会为你将来就职的公司带来很多经济上的得益。(当然,数据库本身就是一个大课题,不去深入研究之,对数据库的认识永远也只是个表面)阅读全文>
发表于 @ 2008年04月21日 22:46:00|评论(loading...)|编辑|收藏