SQL Server 2005中的存储过程,触发器和索引的好处是什么?要全面的
- 提问者网友:藍了天白赴美
- 2021-07-25 17:21
- 五星知识达人网友:人類模型
- 2021-07-25 18:00
假如你面试的话,面试官肯定不会爱听你说的。
如果是一个网络系统,在以下情况下必须使用存储过程:
1 涉及大批量数据统计处理
你不能把N万记录从服务器通过网络传到客户端去处理,比如客户端是对流量敏感的手机用户,你这么做他们会杀了你,你只能用存储过程,把这些数据在服务器上统计出来,然后把结果传给客户端用户;
2 涉及大量用户频繁插入更新删除数据的场合
你必须给用户提供专门的存储过程、通过事务处理来完成这类操作,否则,必然会使数据库表的内容发生数据不一致、以及脏读等等问题,此时的存储过程、在这类操作中要小心给表加锁解锁(说白了就是作好事务处理开始、结束和回滚),如果这些事务处理放在客户端,一旦开始事务、但由于网络连接中断,则可能导致数据库无法解锁而停止工作。
3 涉及查询多个服务器上数据的情况,用户完全不可能知道他对面的服务器有多少、各个服务器存储的都是什么数据,此时也可能是做分布式数据库、也可能是仅仅做的多服务器系统(如新闻服务器、广告服务器、各类商品数据的服务器),无论那种情况,你只能编写存储过程、根据用户要求查询这些数据。
等等吧,所以很多应用系统,大多外围程序就是输入输出,真正的功能全都在存储过程里体现。
触发器是个数据同步的程序,比如你修改了表A、你同时期望修改表B,那么就给表A上做触发器吧。简单说就这么些东西。
- 1楼网友:第幾種人
- 2021-07-25 18:49
存储过程把数据查询放在数据层完成,只需要输入查询的相关参数就可以完成查询,就好像是用函数,不需要在数据访问层写复杂的SQL查询语句,这样系统的耦合度低,结构化好。
而且我觉得ADO.NET使用存储过程的代码结构好。只需要param=CreateParameter(),然后设置ParameterName,DbType和Value然后Command.Parameters.Add(param);基本上这样固定的模式就能很方便的使用各种存储过程,十分的方便。而且使用存储过程查询的速度快,但是具体为什么我也不是很了解。
索引的使用很明显就是为了提高查询速度,有索引等于是给每一行都编了号。
触发器是个特殊的存储过程,顾名思义他是被触发的,就好像事件的概念一样,他用于加强数据完整性约束和业务规则等。触发器用于强制引用完整性,在多个表中添加、更新和删除时,保留这些表之间的关系。但是最好最方便的办法还是在相关表中定义主键和外间约束,使用数据库关系图就可以很容易创建关系。
触发器主要是在约束支持的功能无法满足应用程序的功能需求时使用,也就是说他满足更复杂的需求。我自己学习的过程中还没有使用过触发器。