22,206
社区成员
发帖
与我相关
我的任务
分享
SELECT a.OrderId,b.Sku
FROM Order a, OrderDetail b WHERE a.OrderId = b.OrderId
SELECT a.OrderId,b.SKu,b.Qty
FROM Order a,OrderDetail b WHERE a.OrderId = b.OrderId
Create Index i_OrderId_SKu ON OrderDetail(OrderId,Sku)
SELECT a.OrderId,b.SKu,b.Qty
FROM Order a,OrderDetail b WHERE a.OrderId = b.OrderId
这是查询所有Order的资料, 返回的数据量比较大, 实际应用中应该很少这么用吧?
这时即使是有索引也不定会用的(因为用索引的成本反而高过直接去全表扫描).
建议:
1.只建OrderId的非聚集索引, OrderDetail(OrderId)
2.查询时尽量加上过滤条件,减少无需返回的数据量. 如加OrderID,日期区间,客户ID,Order状态等.
3.检查索引碎片情况,定时的重建/重整索引.
4.检查SQL2000 SP4补丁是否已安装.
SELECT a.OrderId,b.SKu,b.Qty,b.cost,b.cost*b.Qty AS Price
FROM Order a,OrderDetail b WHERE a.OrderId = b.OrderId
类似于这样的。。
这下真的头疼了。 刚测试了下,如果只查询 Detail表里的组合索引的几个字段。 查询只要20秒。
如果加了一个qty . 3分钟也没出来数据。