I have two tables. First is ItemDetails and second is ItemHeaders.
ItemHeaders:
ItemID ItemName
1 Apple
2 Orange
3 Grapes
ItemDetails:
ID ItemHeader1 ItemHeader2 ItemHeader3
1 1 2 1
2 3 2 1
3 2 1 2
4 2 3 3
OutPut:
ID Categroy1 Categroy2 Category3
1 Apple Orange Apple
2 Grapes Orange Apple
3 Orange Apple Orange
4 Orange Grapes Grapes
My Query:
Select ID, i1.ItemName as Categroy1, i2.ItemName as Categroy2, i3.ItemName as Categroy3
From ItemDetails d
Left Join ItemHeaders i1 on d.ItemHeader1 = i1.ItemID
Left Join ItemHeaders i2 on d.ItemHeader2 = i2.ItemID
Left Join ItemHeaders i3 on d.ItemHeader3 = i3.ItemID
问题:这是示例数据,我在ItemDetails中有50,000条记录。当我运行我的查询时,需要很多时间。有人可以建议优化查询或最佳选项来实现上述结果吗?如果问题或疑问不明确,请告诉我。
编辑:ItemID上有一个索引。你说过Pivot。如何使用pivot获取结果?而且还有10个标题而不是3个。这里我只提到了3个。
答案 0 :(得分:0)
除了index.hope之外,左连接是正确的。我的意思是你的要求你不能使用内连接。
ItemDetails的目的是什么? 你可以有一个名为itemHeader的列并输入。
为什么你需要一次运行50000及以上的行。为什么不使用分页?
你也可以在前端转动物品。