1.sql语句的优化(sql tuning)问题
1.尽量使用列名的方式来代替*的方式来进行查询
因为使用*的话,由于*表示任意的意思,所以当数据库读到*的时候就要去解析到底*是代表什么,这个解析的过程必然要消耗一定的时间,同时还会占用一定的cpu资源,然而,如果使用列名的话就不会有这些问题了,直接就可以进行查询了。所以尽量要使用列名来进行查询。
但是要注意了,这个问题只是在9i之前有效,9i之后的版本就没有这个问题了。因为使用*比较简单,所以oracle对*进行了优化,使得二者的性能基本一样,但通俗的讲,列名方式还是比较有的,不过相对比较复杂。
2.在对结果集进行排序时,当order by后边有很多个条件的时候,如果是用and连接的话,应该把最可能假的条件放在最右边,如果是用or 连接的话应该把最真的条件放在最右边,因为oracle是从右至左来进行判断的。
3.sql的优化的第三点,尽量使用显式转换,而减少使用隐式转换,但前提是被转换对象要是能够转换的对象
4.在分组过滤时,当where和having都可以使用时,应该尽量使用where,即,先使用where进行过滤,然后在分组或其他的操作。
5.多表查询和子查询都可以时,尽量使用子查询
6.对于大表,当数据表中的数据非常多时,要使用分区、索引等加快查询
对数据进行分区,然后建立索引,这样就会加快查询的速度