众所周知,缓存数据库查询的结果可以显著缩短脚本执行时间,并最大限度地减少数据库服务器上的负载.如果要处理的数据基本上是静态的,则该技术将非常有效.这是因为对远程数据库的许多数据请求最终可以从本地缓存得到满足,从而不必连接到数据库.执行查询以及获取结果. 但当您使用的数据库与 Web 服务器位于不同的计算机上时,缓存数据库结果集通常是一个不错的方法.不过,根据您的情况确定最佳的缓存策略却是一个难题.例如,对于使用最新数据库结果集比较重要的应用程序而言,时间触发的缓存方法(缓存系统常用的方法,它假设
A,避免在索引列上使用 IS NULL 和 IS NOT NULL 操作 避免在索引中使用然后可以为空的列,ORACLE将无法使用该索引.对于单列索引 如果包含空值,索引将不存在此记录.对于复合索引 如果每个列都为空,索引中同样不存在此记录.如果至少有一个列不为空则记录存在于索引中 B, 用 UNION 替换 OR (适用于索引列) 通常情况下,用UNION替换where子句中的OR会起到较好的作用.对索引列使用OR会造成全表扫描.(以上规则只针对多个索引列有效,如果column没有被索引,查
Record-based与column-based是数据库和存储系统里面两种不同的data layout.我们的思维逻辑是基于行记录的,即Record-based data layout,数据记录都是一行一行来存储和访问.但在很多数据库应用中发现(尤其是读请求为主要数据访问的数据库),人们往往只是访问一行记录中的某些属性数据,而不得不将整行数据读取出来,其中很多冗余的IO操作和数据其实没有必要的.如果能将避免这些冗余的IO操作和数据访问,那数据库访问的性能和吞吐将可以得到大大提高.C-Store