
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的快速发展,我们已经完全的迈入了电子信息时代,所有的记录已经从厚厚的手写本子变成了一个个硬盘数据了。作为数据最关键的后端储存方式,就是数据库,今天青岛数据库培训小编为大家带来,数据库的组成,希望大家喜欢。
sql的优化。通过explain和show profiles进行执行计划分析,找出问题,进行针对性的优化。其中创建高效索引是最有效的一个手段。
多列索引和索引顺序:
出现多个索引做相交操作时(多个AND条件),通常来说一个包含所有相关列的索引要优于多个独立索引。
在选择性高的字段上建立索引,可以让MySQL在查询时过滤掉更多的行。对于多列索引,哪个索引字段在前面,取决于索引的选择性的高低。选择性高的索引排在前面,有利于提高查询效率。例如联合索引(user_group_id,trade_amount)用户的群组肯定比订单的交易金额的选择性高。
覆盖索引:如果一个索引包含或者说覆盖所有需要查询的字段的值,那么就没有必要再回表查询,这就称为覆盖索引。覆盖索引是非常有用的工具,可以极大的提高性能,因为查询只需要扫描索引会带来许多好处:
优化关联查询:以小表驱动大表。
子查询尽量换成join。这是因为join,MySQL不需要在内存中创建临时表来完成这个逻辑上的需求。
确保任何的GROUP BY和ORDER BY中的表达式只涉及到一个表中的列,这样MySQL才有可能使用索引来优化。
优化LIMIT分页:一个常见的问题是当偏移量非常大的时候,比如:LIMIT 10000 20这样的查询,MySQL需要查询10020条记录然后只返回20条记录,前面的10000条都将被抛弃,这样的代价非常高。优化这种查询一个最简单的办法就是尽可能的使用覆盖索引扫描,而不是查询所有的列。然后根据需要做一次关联查询再返回所有的列。对于偏移量很大时,这样做的效率会提升非常大。考虑下面的查询:
修改前:SELECT film_id,description FROM film ORDER BY title LIMIT 50,5;
修改后:
SELECT film.film_id,film.description
FROM film INNER JOIN (
SELECT film_id FROM film ORDER BY title LIMIT 50,5
) AS tmp USING(film_id);