数据库优化方案

materoalized view  物化视图 作为非规范化设计的一种手段,
首先,应学会充分利用简单、传统的技术。
只有完全掌握了这些技术,才能正确评价它们的局限性,最终发现它相当于新技术的潜在优势
1 总结:先打基础,再赶时髦:摆弄新工具之前,先把手艺学好
临时表的索引(如果有的话)可能不是最优的,因此,查询临时表的
语句效率比永久表的差
:暂时工作表意味着以不太合理的方式存储更多信息。
将一次“大批量数据的处理”分割成多次“小块处理”是个坏主意,除非对数据库的修改太昂贵,
否则不要使用,因为这种方法极其低效
几千个语句,借助游标(cursor)不断循环,很慢。换成几个语句,处理同样的数据,
还是较慢。换成一个语句,解决上述问题,最好。
避免:
过程逻辑(procedural logic)”
优化器(cost-based optimizer,CBO)
然而,过程逻辑及其之后的处理相同数据的语句,可以编写到一
个单独的SQL 语句中,CBO 就是这么做的,从而获得最高效的执行方式。
总结:在合理范围内,利用每次数据库访问完成尽量多的工作。
如要使用函数,始终应首选DBMS自带的函数。这不仅仅是为了避免无谓的重复劳动,还因为
自带函数在执行时比任何第三方开发的代码更接近数据库核心,相应地其效率也会高出许多。
总之,统计记录数极可能意味着重复全部搜索,因为它对相同数据处理了两次
总结:没必要编程实现那些数据库隐含实现的功
SQL不需要循环能力,因为它
本质上是在操作集合,SQL只需要执行条件逻辑的能力
总结:有可能的话,用一个语句处理多个更新;尽量减少对同一个表的重复访问。
可以仅对代码中非共用的表(本例中即E1和
E2)使用union,然后配合筛选条件,把union 语句降级为内嵌视图。
你可以过滤分了组的字段,也可以过滤聚合(aggregate)结果(例如检查count() 的结果
是否小于某阈值),或者同时过滤两者;SQL 允许在having 子句中使用这类条件,但应该在
group by 完成后才进行过滤(比如排序之后再进行聚合操作)
总结:尽早过滤掉不需要的数据
总结:当查询的结果集很大时,索引未必必要。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值