SQL优化

⚠️如果存在一对多的关系时,可能会存在重复数据,比如下面的查询

使用子查询

select * from Orders where id in (select OrderId from OrderDetails);

表连接方式改写

select t1.* from Orders t1 inner join OrderDetails t2 on t1.Id = t2.OrderId

type性能从好到差的排序

system、const、eq_ref、ref、fulltext、ref_or_null、unique_subquery、index_subquery、range、index_merge、index、ALL

添加单列索引

alter table OrderDetails add index id_OrdId(OrderId)

子查询优化的方式

1.使用表连接进行替换,尤其是子查询的结果集较大

2.添加复合索引进一步优化,其中字段包含where条件字段与关联字段

3.复合索引中字段的顺序要先遵循最左前缀原则

4.MySql 8 自动对子查询进行优化,性能接近表连接

你可能感兴趣的:(数据库,sql,数据库)