易截截图软件、单文件、免安装、纯绿色、仅160KB

高效SQL查询之索引(V)

先站在应用程序的角度说说它们的不同。
1、  直接拼 SQL
就像大家了解的那样,直接拼 SQL 带来了 SQL 注入攻击,带来了拼时些许的性能损失,但是拼不用添加 SqlParameter ,会少写很多代码——很多人喜欢直接拼,也许就因为这点。这种做法会把你拼好的 SQL 原样直接发送到 DB 服务器去执行。(注意类似 ”exec yourproc ‘param1’, 12” 的语句不在此范畴,这是调用存储过程的一种方式)
2、  参数化 SQL
所谓的“参数化 SQL ”就是在应用程序侧设置 SqlCommand.CommandText 的时候使用参数(如: @param1 ),然后通过 SqlCommand.Parameters.Add 来设置这些参数的值。这种做法会把你准备好的命令通过 sp_executesql 系统存储过程来执行。通过参数化 SQL ,和直接拼 SQL 相比,最直接的好处就是没有 SQL 注入攻击了。
3、  调用存储过程
直接调用存储过程其实和参数化 SQL 非常相似。唯一的本质不同在于你发送到 DB 服务器的指令不再是 sp_executesql ,而是直接的存储过程调用而已。
 
很多人非常非常厌恶在应用程序中使用存储过程,而宁愿使用拼 SQL 或者参数化 SQL ,理由是它们提供了更好的灵活性——这个理由其实非常非常的发指(俺现在喜欢上这个词了)。
现在做设计,一般都是从上到下来,重心都在业务逻辑上。传说中的领域模型设计完,测试用例都通过之后,才会考虑数据持久化方式。数据持久化是系统的一部分,但绝对不是最重要的部分,设计应该围绕业务逻辑开展,持久化应该仅仅是个附件。至少,高层应用应该尽可能的不关心处于最底层的物理存储结构(如:表)和数据持久、反持久方式(是拼 SQL 还是存储过程),所以用不用存储过程根本不重要。很多人害怕存储过程,其实是害怕存储过程中包括业务逻辑——真实情况是,如果存储过程中包含了业务逻辑,那一定最初需求分析不够导致用例提取不足,导致测试用例覆盖不够,导致领域模型设计不充分,要不就是偷懒。
 
=====
站在 DB 角度讨论它们的不同,主要从 cpu 、内存方面来考虑,其他诸如安全性, msdn 上都有, google 也能拿到一堆资料,不再赘述。
首先是查询计划。
SQL 编译完一条 SQL 之后,会把它缓存起来(可以通过 sys.syscacheobjects 系统视图查看),以后再有相同的查询过来(注意 sys.syscacheobjects 视图中的 sql 字段,和它存储的东西完全一样才能称为&


相关文档:

sql 查询慢的48个原因分析

还是一转帖,总结的不错,大家借鉴。
原网址:
http://database.ctocio.com.cn/222/9068222.shtml
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
  2、I/O吞吐量小,形成了瓶颈效应。
  3、没有创建计算列导致查询不优化。
  4、内存不足
  5、网络速度慢
  6、查询出 ......

SQL Enlight 1.5 破解 第二版

SQL Enlight 1.5 破解 第二版 收藏
  破解声明:我的破解仅用于研究,请勿用于商业用途,需要使用请购买正版软件。
可恶的UbitSoft,我的破解出来还没几天,他的程序就改变了验证逻辑,虽然我觉得SQL Enlight的功能不是非常强大,但是他的防破解功能倒是下了不少功夫,除了核心代码用vc++.net编写的native cod ......

SQL Server 知识积累

varchar和nvarchar如何选择:
varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的。中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节。虽然使用nva ......

SQL查询语句复习题

新建学生-课程数据库的三个表:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept) Sno为主码;
课程表:Course(Cno,Cname,Cpno,Credeit) Cno为主码;
学生选修表:SC(Sno,Cno,Grade) Sno,Cno,为主码;
Student
学号
Sno姓名
Sname性别
Ssex年龄
Sage所在系
Sdept
95001李勇男20CS
95002刘晨女19IS
95003王敏女18MA
95004 ......

SQL查询索引优化

建立索引
(一)深入浅出理解索引结构
实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:
其实,我们的汉语 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号