数据库中的优化问题

来源:互联网 发布:淘宝手机优惠券尺寸 编辑:程序博客网 时间:2024/06/05 05:11

优化:索引优化、sql语句优化、用memecached缓存(memcached是一套分布式的高速缓存系統)

Sql语句优化

1)选择最有效率的表名顺序:oracle的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表将最先处理,所以在需要多个表的情况下,应该选择记录条数最少的表最为基本表。

2)Where子句中的连接顺序:oracle采用自上而下的顺序解析where子句,所以那些可以过滤掉最大数量记录的条件必须写在where子句的末尾。

3)Select子句中避免使用‘*

4)使用decode函数来减少处理时间:使用decode函数可以避免重复扫描相同记录或重复连接相同的表。

5)truncate 替代delete:truncate执行以后,数据段不可以恢复,回滚段不存放任何可被恢复的信息,因此很少的资源被调用,执行时间也会很短。

6)使用表的别名:当在sql语句中连接多个表示,请使用表的别名并把别名前缀于每个column上,这样一来,就可以减少解析的时间并减少那些由column歧义引起的语法错误。

7)用》=替代》:

8)SQL语句用大写的:因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行,

9)where子句替换having子句,避免使用having子句,having只会在检索出所有记录之后才会对结果集进行过滤。

10)Where子句中,如果索引是函数的一部分,优化器将不适用索引而使用权标扫描。

 

当数据库比较大时,要考虑水平分割(经常查询的数据放到一个表中,不经常用到的放到另一个表中,两个表中的数据列数相同)

垂直分割,就是把主键和经常使用的列放到一个表中,比经常使用的列加上主键放到另一个表中,每一个字表中的条数相同。

0 0