今天说说sql的一些优化【小冬】

 

1、索引,索引能有效提高查询的效率,但是在表中插入或更新数据时,将有额外的操作来维护索引,从而降低插入或更新的效率,还有索引占用存储空间,所以索引并不是越多越好,而且应尽量避免在建立了索引的数据列上进行计算,not,<>,!=,IS NULL,IS NOT NULL和使用函数的操作,索引字段 不要有null值 。

2、有时UPDATE、SELECT 语句写得很复杂(嵌套多级子查询),这时可以考虑适当拆成几步,先建立一些临时数据表,再进行关联操作。

3、避免在WHERE子句中使用in,not in,可以使用 exist 和not exist代替 。

4、尽量少使用select * from table这种方式,知道自己想要的字段的话应该写上。

5、尽量减少访问数据库的次数:不要在循环里执行语句,可以先存到变量,在循环体外一次执行。

6、用Where子句替换having子句,having子句只会在检索出所有记录之后才对结果集进行过滤。

7、对同一个表update不同字段,可以的话应该写在一条语句上。

 
 

10**翔(广州) 16:49:44

2和3都印象非常深刻。

 
 

10**敏 16:57:28

not in直接不用。。至于in

in表的数据量越大,in 的字段越多,就越慢,反之,也可以用in 不用exists    差不了多少吧

 
 

10小冬(珠海) 17:01:53

sql语句执行的顺序:from 表 where 过滤 得到select的结果 再group by分组完后根据having的条件过滤 再order by排序

 


 

我自己感觉sql优化其实是门艺术,你只要领悟得了其中的精髓、其中的内含,那我相信你很快会成为一名优秀的 数据库大师,你只需再往前一步,成为大师,只是时间问题。
可能你会说作为软件开发人员,对数据库不需要太深入,那我想说的是,如果你只想当一名码奴,那可以不需要深入,但是如果你想继续走这条道,不被“剥削”,那我想你不深入  可能不行。
花点时间深入学习,多动动手,一定会有意想不到的效果,深入去学习数据库,你一定会有所惊喜,但我也得告诉你,越深入 有时也会越痛苦,但 痛并快乐着,这个慢慢去体会吧!
横线下面是俺抒发一下自己的感受,当我没说。
                                                         add by Johnny