优化:索引优化、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子句中,如果索引是函数的一部分,优化器将不适用索引而使用权标扫描。
当数据库比较大时,要考虑水平分割(经常查询的数据放到一个表中,不经常用到的放到另一个表中,两个表中的数据列数相同)
垂直分割,就是把主键和经常使用的列放到一个表中,比经常使用的列加上主键放到另一个表中,每一个字表中的条数相同。