父子表这类的结构,如何做些查询的优化
我现在有个订单库,附表保存用户的支付信息、订单号、支付时间、订单状态等。
子表保存商品信息。
查询的时候会有针对附表和子表同时查询,例如查询状态等于待发货,并且包含商品A的订单。
这样就要写类似下面的条件。
select * from 订单主表 where 状态=‘待发货’ and exists (select 1 from 订单子表 where 商品名称 Like ‘%商品A%’ and 子表.orderid = 主表.id )
类似的结构还有很多,比如可能还会有个保存支付内容的子表,如果再加上一个必须是支付宝支付的,就要再加一个exists。
感觉这么写一旦数据量大了,会很慢。有没有办法优化这种结构,或者优化查询的方法?