5M在做SQL优化的时候,经常需要做的工作是什么?
在做SQL优化的时候,经常需要做的工作是帮助CBO计算出比较准确的Rows。注意:说的是比较准确的Rows。CBO是无法得到精确的Rows的,因为对表收集统计信息的时候,统计信息一般都不会按照100%的标准采样收集,即使按照100%的标准采样收集了表的统计信息,表中的数据也随时在发生变更。另外计算Rows的数学公式目前也是有缺陷的,CBO永远不可能计算得到精确的Rows。
如果CBO每次都能计算得到精确的Rows,那么大家就只需要关心业务逻辑、表设计、SQL写法以及如何建索引了,再也不用担心SQL会走错执行计划了。
评论
有用 7
在进行 SQL 优化时,经常需要进行以下工作:
分析查询计划:通过查看查询执行计划,了解查询的执行方式和步骤,确定是否存在性能瓶颈。可以使用
EXPLAIN PLAN或数据库提供的性能分析工具来获取查询计划。检查索引使用情况:分析查询所涉及的表的索引使用情况。确保查询中的条件列上有合适的索引,以减少数据访问的成本和提高查询性能。
优化查询条件:检查查询条件是否合理,并考虑是否可以改变条件的顺序或重写查询语句,以提高查询效率。避免在查询条件中使用函数、类型转换或不必要的逻辑操作,这可能导致索引无法使用。
优化数据访问:减少查询所需的数据量,可以使用合适的投影列(只选取需要的列),避免不必要的连接操作,尽量减少子查询的使用,优化关联条件等。
避免全表扫描:尽量避免全表扫描的情况发生,可以通过创建索引、使用合适的查询条件和优化查询语句来避免全表扫描,提高查询性能。
适当使用缓存:对于频繁执行的查询,可以考虑使用缓存技术,将查询结果缓存起来,避免每次查询都要从数据库中获取数据。
监控和调优数据库参数:合理配置数据库的参数,根据数据库的负载和查询特点来调整参数,以提高数据库性能。
定期收集统计信息:通过定期收集表和索引的统计信息,优化查询优化器的选择和执行计划生成过程,从而提高查询性能。
进行性能测试和监测:对优化后的查询进行性能测试,通过监测和比较不同优化方案的执行效果,选择性能最佳的方案。
评论
有用 3
墨值悬赏

