For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
数据库架构开发是每一位后端编程开发程序员都应该熟练掌握的一个编程开发技术,而本文我们就通过案例分析来了解一下,数据库慢查询优化包含哪些方法。
对于慢查询的优化我们需要清楚优化是分为几种类别的,在Mysql中优化策略分为动态优化和静态优化:静态优化主要为优化更好的写法,比如常数的排序和一些固定的优化策略等,这些动作通常在一次优化过程中就可以完成。而动态优化策略要复杂很多,可能会在执行的过程中优化,有可能在执行过后重新评估执行计划。
静态优化是受优化器影响的,不同版本有不同情况,所以这里讲述动态优化的情况,而动态优化主要包含下面的内容:
关联表顺序,有时候关联表顺序和查询顺序不一定相同。
重写外连接为内连接:如果一个外连接关联是没有必要的就优化掉外连接关联。
等价替换,比如a>5anda=5被优化为a>=5,类似数学的逻辑公式简化
优化count()、max()、min()等函数:有时候找大和小值只需要找大和小的索引记录,这时候由于不需要遍历,可以认为直接为哈希的获取记录的方式,所以在查询分析的extra里面进行体现(Selecttablesoptimizedaway),比如:explainselectmax(actor_id)fromactor;
预估和转化常数:以连接查询为例,如果在查询条件中可以实现预估关联的记录条数,那么对于一个关联查询来说就有可能被优化器作为常数进行优化,因为事先取出记录的条数被优化器知晓。所以优化起来十分简单。
子查询优化:子查询虽然有可能被索引优化但是需要尽量避免使用。
覆盖索引扫描:让索引和查询列一致,是非常高效的优化和执行方式
提前终止查询:提前终止查询指的是当遇到一些查询条件会让查询提前完成,优化器会提前判断加快数据的匹配和搜索速度
等值传递,如果范围查询可以根据关联表查询优化,那么无需显式的提示则可以直接搜索数据。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。