您的位置:首页 > 数据库

sql语句的细节优化

2015-05-29 16:58 106 查看

Sql优化这个话题说来好像很宏大似的,如果你的数据库负载能力超牛B,完全可以不去耗费心思去捋sql;但,话有说回来,一个有条有理的sql,就代表了一个程序员的个人风格,有谁不希望自己的代码被人模仿或称赞呢?废话少说,直接看下文,有不同意见,及时回复,商讨。

1. 尽量使用列名代替*。

2. Where条件的执行顺序:右→左。

where arg0 and arg1;当‘and’关键字两边都符合条件的情况下,条件才成立,为了提高效率,尽量把不符合条件的放在右边,按照条件执行顺序,先判断右边条件,一旦不成立,就不再判断左边的条件,进而提高sql语句的执行效率。
where arg0 or arg1;当‘or’关键字两边有一个条件成立时,这个where条件就会成立;按照条件执行的顺序,尽量把符合条件的放在右边,如果右边的成立,就不再执行左边的条件,进而提高sql语句的执行效率。

3. 如果在sql语句中where关键字和having关键字都可以使用的地方,尽量使用where关键字,因为,where关键字会先去除不符合条件的信息,可以减少查询的数据量;而having为过滤分组,它会把所有的信息先分组,再排除不符合条件的信息,如果在信息量比较大的表中,使用having会比使用where查询数据要慢些。

4. 在使用自连接的时候,表的数据量不能过大,因为自连接会产生笛卡尔积,查询产生的数据量为表中数据条数的平方;这时,适合使用层次查询,优点:不会产生笛卡尔积。缺点:查询得到的为一个树结构,不直观。

5. 在子查询和多表查询都可以实现查询的情况下,理论上,尽量使用多表查询。

6. 尽量不要使用集合运算,

因为,sql语句会随着集合个数的增加,运算时间会增加,效率会降低。

如下:上边的为集合运算,下边的为非集合运算

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: