SQL:优化查询以进行少量IO操作

Shy*_*yju 0 sql optimization

如何重写以下查询以返回具有少量IO操作和较少响应时间的结果

select 
    *,
   (select Product_Name from InventoryMaster J2 where J1.ParentItem=J2.ItemId) as ParentName,
   (select Description from InventoryMaster J2 where J1.ParentItem=J2.ItemId) as ParentDesc
from
   InventoryMaster J1
where
   Flag like '%N%'
Run Code Online (Sandbox Code Playgroud)

InventoryMaster表有一个父Item列,它将存储另一条记录ItemId(用于父子关系)的某些记录

WW.*_*WW. 6

where
   Flag like '%N%'
Run Code Online (Sandbox Code Playgroud)

以上情况使数据库难以有效地回答此查询.它必须查看"Flag"列的每个值,并检查字符串中的"N".

这可以改成Flag = 'N'吗?

如果答案为否,则数据库设计不正确.您应该在列中存储一个东西,而不是多个.搜索"数据库规范化".

您应该考虑将查询重写为三个表之间的连接,而不是像查询列表中那样使用子选择.