• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

多表关联如何优化

wgybb 2008-03-13 07:14:03
我现在有四张表分别如下:
Buy(ID[PK],SmallClassID,shi,qu,Title,IsCheck)
SmallClass(ID[PK],SmallClassName)
shi(ID[PK],shiName)
qu(ID[PK],quName)

进行关联的语句如下:
SELECT Buy.ID,Buy.Title,Buy.SmallClassID,shi.shiName,qu.quName,SmallClass.SmallClassName FROM (SELECT * FROM Buy WHERE SmallClassID=68 and shi=1 and IsCheck=1) AS Buy,shi,qu,SmallClass WHERE Buy.shi=shi.ID AND Buy.qu=qu.ID AND Buy.SmallClassID=SmallClass.ID

Buy表里面有50000多条记录,其它三个表数据量非常小,现在执行起来有CPU为80-100之间,请教各位这条语句是否能再忧化一些。Buy这个表的涉及有INSERT,UPDATE,DELETE这些操作,有时候只与其中一个表关联,有时候也可能与两个表进行关联。我想建索引,试问该怎样建才好
1:在Buy表里面分别对shi,qu,SmallclassID建三个索引
2:还是建一个组合索引create index IX_Buys on buy(shi,qu,SmallClass)

或者有更好的办法,请大指点一下,谢谢!

如果我建一个组合索引的话,那么假如当Buy表只与SmallClass表进行关联的时候,这个组合索引能不能起到作用呢?

还有一点,我上面写的关联语句如果换成INNER JOIN这个,效率上有区别吗?
...全文
90 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
flairsky 2008-03-14
并不反对用复杂子查询

但有时候可以换换临时表试试看
回复
BoyHaXin 2008-03-14
。。。不是Web区的。。。
回复
BoyHaXin 2008-03-14
嘿嘿,便宜了。
回复
dawugui 2008-03-13
语句没什么优化的.

主要是各表要建立主键.
要连接的字段建立索引.
回复
JiangHongTao 2008-03-13
SELECT Buy.ID,Buy.Title,Buy.SmallClassID,shi.shiName,qu.quName,SmallClass.SmallClassName
FROM Buy join shi on Buy.shi=shi.ID join qu on Buy.qu=qu.ID
join SmallClass on Buy.SmallClassID=SmallClass.ID
where buy.SmallClassID=68 and buy.shi=1 and buy.IsCheck=1

感觉分别建索引好。
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-13 07:14
社区公告
暂无公告