设为首页 加入收藏

TOP

要养成良好的书写Sql的习惯(三)
2014-11-24 03:04:57 来源: 作者: 【 】 浏览:10
Tags:养成 良好 书写 Sql 习惯
0-06-30')=0

应改为:WHERE 日期='2010-06-30'

  (6)不要对索引字段进行多字段连接

比如:

WHERE FAME+'. '+LNAME='HAIWEI.YANG'

应改为:

WHERE FNAME='HAIWEI' AND LNAME='YANG'

  八:多表连接的连接条件对索引的选择有着重要的意义,所以我们在写连接条件条件的时候需要特别注意。

  A、多表连接的时候,连接条件必须写全,宁可重复,不要缺漏。

  B、连接条件尽量使用聚集索引

  C、注意ON、WHERE和HAVING部分条件的区别

  ON是最先执行,WHERE次之,HAVING最后,因为ON是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,WHERE也应该比HAVING快点的,因为它过滤数据后才进行SUM,在两个表联接时才用ON的,所以在一个表的时候,就剩下WHERE跟HAVING比较了。  

1

考虑联接优先顺序:

2

(1) INNER JOIN

3

(2) LEFT JOIN (注:RIGHT JOIN 用LEFT JOIN 替代)

4

(3) CROSS JOIN

  其它注意和了解的地方有:

  A、在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数。

  B、注意UNION和UNION ALL的区别。-- 允许重复数据用UNION ALL好

  C、注意使用DISTINCT,在没有必要时不要用。

  D、TRUNCATE TABLE 与DELETE 区别。

  E、减少访问数据库的次数。

  还有就是我们写存储过程,如果比较长的话,最后用标记符标开,因为这样可读性很好,即使语句写的不怎么样,但是语句工整,C# 有region,SQL我比较喜欢用的就是:

--startof 查询在职人数

SQL语句

--end of

  正式机器上我们一般不能随便调试程序,但是很多时候程序在我们本机上没问题,但是进正式系统就有问题,但是我们又不能随便在正式机器上操作,那么怎么办呢?我们可以用回滚来调试我们的存储过程或者是SQL语句,从而排错。

BEGINTRAN

UPDATE a SET 字段=''

ROLLBACK

  作业存储过程我一般会加上下面这段,这样检查错误可以放在存储过程,如果执行错误回滚操作,但是如果程序里面已经有了事务回滚,那么存储过程就不要写事务了,这样会导致事务回滚嵌套降低执行效率,但是我们很多时候可以把检查放在存储过程里,这样有利于我们解读这个存储过程,和排错。

BEGINTRANSACTION

--事务回滚开始

--检查报错

IF ( @@ERROR0 )

BEGIN

--回滚操作

ROLLBACKTRANSACTION

RAISERROR('删除工作报告错误', 16, 3)

RETURN

END

--结束事务

COMMITTRANSACTION

摘自:wanghangzhou1984的专栏

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MongoDB、HandlerSocket和MySQL性.. 下一篇解决:在建立与服务器的连接时出..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)