免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1796 | 回复: 3
打印 上一主题 下一主题

关于如何优化SQL [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-25 21:30 |只看该作者 |倒序浏览
两个大表
tblSaleUnit:StoreID,ItemID,salesunit
tblPrice:      StoreID,ItemID,salesprice

要获得各店的 sales value.需要将两表通过StoreID,itemID连接,
最简单的就是:
select tblSaleUnit.StoreID,sum(salesunit * salesprice) from tblSaleUnit,tblPrice
where tblSaleUnit.StoreID=tblPrice.StoreID
and tblSaleUnit.ItemID=tblPrice.ItemID
group by tblSaleUnit.StoreID;

或者先建一个临时表tblTmp

select tblSaleUnit.StoreID,salesunit , salesprice into tblTmp from tblSaleUnit,tblPrice
where tblSaleUnit.StoreID=tblPrice.StoreID
and tblSaleUnit.ItemID=tblPrice.ItemID;

然后再在tblTmp 上作Group 操作.

试问哪种方法更快?

论坛徽章:
0
2 [报告]
发表于 2005-05-26 09:57 |只看该作者

关于如何优化SQL

你自己实验一下不就可以了,和表里面的数据大小以及数据库sga设置有关,我估计有一个临界值,低于这个值,第一个方法好,如果数据量多,第二个方法好。

论坛徽章:
0
3 [报告]
发表于 2005-05-26 11:18 |只看该作者

关于如何优化SQL

多谢,因为数据还没整理完毕,所以暂时无法测试.其中一张表会超过1千万的记录,另一张大约一百万.
简单起见的话,我肯定会用第一种,但根据经验应该会比教慢.所以想还有没有更快的方法.
另外如果通过建视图,而不是建临时表,大家有什么想法?

论坛徽章:
0
4 [报告]
发表于 2005-05-26 11:57 |只看该作者

关于如何优化SQL

插入表应该会更快的,第二种方法更改一下

create table tblTmp  
as
select tblSaleUnit.StoreID,salesunit , salesprice
from tblSaleUnit,tblPrice
where tblSaleUnit.StoreID=tblPrice.StoreID
and tblSaleUnit.ItemID=tblPrice.ItemID;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP