`
icrwen
  • 浏览: 269594 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

sql server存储过程注意事项

 
阅读更多

2012-11-2

批量修改sql server里的数据

利用sa帐号把数据库里的数据导出成excel表格,然后再在excel里替换相应的数据,

最后truncate table 表明将数据库里的自增字段清零,然后再打开表格数据之后清空表格数据,将excel表里的数据粘贴上去。

 

 

2012-10-31

数据库查询里尽量用exists,用在外表比较小,内表比较大的情况下, 如果内表比较小,外表比较大的话可以用in

查询武将模板表里,排除已经录取的武将。

     select * from PlayerTemplet pt 

     where  not exists 

      (select *  from player p  where p.userid = 7 and pt.PlayerTempletID = p.PlayerTempletID)


http://exmail.qq.com/

有些书适合一读再读,每次读都会有不同的收获。

http://221.215.38.136/grcx/pages/qdyth/wsbs/login.jsp

一、尽量避免反复访问同一张表或几张表,尤其是数据量较大的表,可以考虑先根据条件提取数据的保存到临时表中,然后再做连接。

 

二、尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该改写,如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作。

 

三、注意where条件的顺序 ,越能缩小范围的越要放在前面,应该根据索引顺序、范围大小来确定条件子句的前后顺序,尽可能的让字段顺序与索引顺序相一致,范围从大到小。

 

四、不要在where子句中的"="左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

 

五、尽量使用exists代替select count(1)来判断是否存在记录,count函数只有在统计表中所有函数是使用,而且count(1)比count(*)更有效率。

 

六、尽量使用">=", 不要使用">"

 

七、注意一些or子句和union子句之间的替换。

 

八、注意表之间连接的数据类型,避免不同数据之间的连接。

 

九、注意insert,update操作的数据量,防止与其他应用冲突,如果数据量超过200个数据页面(400k),那么系统将会进行锁升级,页级锁会升级成表级锁。

 

临时数据库的使用规范

1)尽量避免使用distinct、ordery by 、group by、having、join、compute,因为这些语句会加重tempdb的负担。

 2)避免频繁创建和删除临时表,减少系统表资源的消耗。

3)在新建临时表时,如果一次性插入数据量很大,那么可以使用select into 代替 create tabl,避免log,提高速度,如果数据量不大,为了缓和系统表的资源,建议先create table,然后insert.

 

  1. SELECT *  
  2. INTO new_table_name   
  3. FROM old_tablename 

iv. 如果临时表的数据量较大,需要建立索引,那么应该将创建临时表和建立索引的过程放在单独一个子存储过程中,这样才能保证系统能够很好的使用到该临时表的索引。

v. 如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先truncate table,然后drop table,这样可以避免系统表的较长时间锁定。
vi. 慎用大的临时表与其他大表的连接查询和修改,减低系统表负担,因为这种操作会在一条语句中多次使用tempdb的系统表。 

 
d)合理的算法使用:   
根据上面已提到的SQL优化技术和ASE Tuning手册中的SQL优化内容,结合实际应用,采用多种算法进行比较,以获得消耗资源最少、效率最高的方法。具体可用ASE调优命令:set statistics io on, set statistics time on , set showplan on 等。

 

sql 语法

 

1) 检索是否存在B记录,然后才检索

  select * from A exits (select * from B where conditions) 

 

2)检索以c1

   select c1 ,avg(c2) from A  group by c1 having count avg(c2) > 0

  查询每个部门的每种职位的雇员数

 select dept ,job,count(* ) from t group by dept, job

 

 

2012-7-16

1)不要用count(*)来判断是否有记录而是用if exits或者if not exits

 IF NOT Exists (SELECT PlayerSpecialTrainDetailID FROM PlayerSpecialTrainDetail    where  PlayerId = @PlayerId and UserID = @UserID  AND IsDue = 0)

2)存储过程用来返回是否有记录,如果有则返回0,如果没有则返回1

IF EXISTS(SELECT NULL FROM PlayerSpecialTrainDetail WITH(NOLOCK)WHERE PlayerID=@PlayerID AND IsDue=0)

BEGIN

SELECT CONVERT(BIT,0)

END

ELSE

BEGIN

SELECT CONVERT(BIT,1)

END

 

分享到:
评论

相关推荐

    SQLServer存储过程调用WebService

    **注意事项:** - SQL Server 2008 必须运行在 x86 架构的服务器上,才能支持 Soap Toolkit 3.0 的调用。 - 如果是 SQL Server 2012 及以上版本,则无需安装 Soap Toolkit 3.0,因为这些版本已经内置了对 Web ...

    sqlserver存储过程解密工具

    这就是“sqlserver存储过程解密工具”所解决的问题。 SQL Server存储过程的加密通常是在开发或部署过程中,为了保护知识产权、防止未授权修改或者增加安全性而进行的。然而,在某些情况下,比如接手他人项目、排查...

    SQL server存储过程习题,SQL触发器习题.rar

    在SQL Server数据库管理系统中,存储过程和触发器是两种非常重要的数据库编程元素,它们对于数据库设计和数据管理具有深远的影响。下面将详细讲解这两个概念及其相关的知识点。 **SQL存储过程**: 1. **定义**:SQL...

    sqlserver 存储过程With Encryption加密的解密

    ### SQL Server 存储过程 With Encryption 加密的解密方法 #### 背景与目的 在SQL Server中,为了保护存储过程中的敏感代码或逻辑,可以使用`WITH ENCRYPTION`选项对存储过程进行加密处理。这可以有效防止未经授权...

    SQL Server存储过程解密工具

    SQL Server存储过程是数据库管理系统中一个非常重要的组成部分,它允许程序员和DBA编写一组复杂的SQL语句,封装成一个可重用的模块。在某些情况下,为了保护代码不被未经授权的用户查看或修改,开发人员可能会选择对...

    针对sqlserver 2008 存储过程通过With Encryption加密方式的解密

    解密存储过程的注意事项 在使用解密存储过程时,需要注意以下几点: * 请确保您拥有足够的权限来访问和修改存储过程。 * 请确保您已经备份了数据库,以免在解密过程中出现错误。 * 请确保您已经了解解密存储过程的...

    SQL Server存储过程编程经验技巧

    本文将详细介绍SQL Server存储过程编程经验技巧,涵盖了SQL Server存储过程的基本概念、编写技巧和注意事项等内容。同时,本文也将对SQL Server存储过程的应用场景和优化方法进行介绍,以便读者更好地理解和应用SQL ...

    SQL 存储过程发送HTTP请求

    ### SQL存储过程发送HTTP请求知识点解析 ...综上所述,通过SQL Server存储过程发送HTTP请求是一项实用的技术,能够在数据库层面上实现与外部系统的有效集成。然而,在实际应用时还需要考虑到安全性、性能等方面的问题。

    解密SQL存储过程,适用于SQLSERVER2000存储过程

    ### 解密SQL Server 2000存储过程详解 #### 一、背景介绍 在数据库管理系统(DBMS)中,存储过程是一种预先编译好的SQL语句集合,它被保存在数据库服务器上,并且可以像调用普通函数一样被应用程序所调用。这种机制...

    jsp调用sqlserver2000存储过程

    ### jsp调用sqlserver2000存储过程 #### 一、背景介绍 在Web开发中,经常需要处理数据库操作。使用JSP(JavaServer Pages)与后端数据库进行交互是一种常见的方式。本文将详细介绍如何通过JSP来调用SQL Server 2000...

    hiberate SQL Server 2000 存储过程.pdf

    标题与描述中的关键词“hibernate SQL Server 2000 存储过程”指出了本文档的主题,即在Hibernate框架下如何与SQL Server 2000的存储过程进行交互。下面将深入探讨这一主题,包括为什么在Hibernate中使用存储过程、...

    解密SQL Server2000存储过程(可以选择存储过程查询)

    存储过程是SQL Server 2000中的一个核心特性,是预编译的SQL语句集合,可以理解为数据库中的可执行程序。它们允许开发人员封装复杂的业务逻辑,提高代码复用性,降低网络流量,并提供一定程度的安全性。 1. **存储...

    SQL Server交叉查询存储过程实现(带查询条件)

    SQL Server交叉查询存储过程实现(带查询条件) 一、交叉查询的概念 交叉查询是指将纵向的数据转换为横向的数据,以便更好地进行数据分析和展示。在SQL Server中,可以使用pivot函数或自定义函数来实现交叉查询。 ...

    探究SQLSERVER存储过程.pdf

    SQL Server存储过程是数据库开发中的一项重要技术,它允许开发人员将一系列的SQL语句和控制流逻辑封装成一个可重复调用的数据库对象。在处理复杂的业务逻辑和数据库操作时,存储过程能够显著提高开发效率和系统性能...

    C#连接sql server 2005的存储过程例子大全.rar

    本压缩包“C#连接sql server 2005的存储过程例子大全.rar”提供了一系列示例,帮助开发者理解和应用C#连接SQL Server 2005进行存储过程操作。 首先,存储过程(Stored Procedure)是预编译的SQL语句集合,存储在...

    在MS SQL server2000中创建和调用存储过程

    #### 四、注意事项 - **错误处理**: - 示例中使用了异常捕获机制来处理可能出现的`ClassNotFoundException`和`SQLException`异常,并将异常信息输出到页面上。 - 在实际应用中,应当更加细致地处理这些异常,...

    delphi如何调用sql存储过程,并获取结果

    ### 注意事项 1. **参数顺序**:确保在`CreateParameter`时按照存储过程中参数的实际顺序添加。 2. **数据类型匹配**:存储过程中的参数类型必须与Delphi中的参数类型相匹配。 3. **异常处理**:在实际应用中,还...

    SQLserver定时备份存储过程

    - 在执行任何备份任务之前,必须确保`SQLServerAgent`服务已经启动,否则定时任务将无法执行。 - 需要注意的是,在实际部署中,应考虑备份文件的存放位置、备份文件的命名规则以及备份策略等因素。 - 调度规则中的`@...

    Sql server 存储视频高效压缩

    3. **使用数据压缩的注意事项**: - 数据压缩会增加CPU使用率,因为压缩和解压缩操作都需要CPU资源。 - 压缩的视频数据在读取时需要解压缩,如果视频访问频率高,可能会增加CPU负载。 - 需要评估压缩的性价比,...

    SQL Server 存储过程实现详解与应用示例 - 数据库开发

    内容概要:本文详细讲解了 SQL Server 中无参数存储过程和带参数存储过程的创建方式及其应用场景。首先展示了如何在一个指定的数据库中创建一个返回用户所有信息的无参存储过程;接着介绍了带有输入参数的存储过程的...

Global site tag (gtag.js) - Google Analytics