如何重写以下查询以返回具有少量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(用于父子关系)的某些记录
where
Flag like '%N%'
Run Code Online (Sandbox Code Playgroud)
以上情况使数据库难以有效地回答此查询.它必须查看"Flag"列的每个值,并检查字符串中的"N".
这可以改成Flag = 'N'
吗?
如果答案为否,则数据库设计不正确.您应该在列中存储一个东西,而不是多个.搜索"数据库规范化".
您应该考虑将查询重写为三个表之间的连接,而不是像查询列表中那样使用子选择.
归档时间: |
|
查看次数: |
180 次 |
最近记录: |