SQL几个数据表都有100万左右数据,几个表关联查询统计总数怎么提高查询性能?

oracle数据库SQL:SELECTcount(id)FROMTBL_POS_SHOPs,TBL_POS_POSp,TBL_POS_CUSTOMERc,TBL_POS_... oracle数据库SQL:
SELECT count(id)
FROM TBL_POS_SHOP s,
TBL_POS_POS p,
TBL_POS_CUSTOMER c,
TBL_POS_ORDER o,
TBL_POS_CARDINFO cd
WHERE o.POS_CATI = p.POS_CATI
and o.CUSTOMER_ID = c.ID
and o.SHOP_ID = s.ID
and o.CARDINFO_ID = cd.ID
已经添加有相关索引。
我本来是想用于分页时统计总数的,可是一执行就不动了,求高手指点,类似这种情况怎么解决?
展开
 我来答
hnhygkx1987
2013-11-09 · TA获得超过209个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:138万
展开全部
SELECT count(id)
FROM TBL_POS_SHOP s,
TBL_POS_POS p,
TBL_POS_CUSTOMER c,
TBL_POS_ORDER o,
TBL_POS_CARDINFO cd
WHERE o.POS_CATI = p.POS_CATI
and o.CUSTOMER_ID = c.ID
and o.SHOP_ID = s.ID
and o.CARDINFO_ID = cd.ID

首先,我觉得你找出各个表的关系,主从关系,主表放左边,依赖的表放右边,都用左连接,而不用现在这种内连接,
其次你的指定的count(id)请带上表的别名,你取得是哪个表的ID,否则系统区分不了,就会产生长时间等待。
追问
有道理,但这还不足以解决根本性问题,性能还是如此的差,还有没有更有效办法?
追答
主键和外键都确认加了索引! 加了索引应该会快很多了
lllcbb
2013-11-10 · TA获得超过115个赞
知道答主
回答量:99
采纳率:0%
帮助的人:47.4万
展开全部
这样的需求并不需要关联查询,直接统计主表记录数即可:SELECT count(*) from TBL_POS_ORDER。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式