这种表,怎么查才能快?

[复制链接]
查看11 | 回复5 | 2017-4-29 10:55:21 | 显示全部楼层 |阅读模式
Parameters表
PID
PNAME
01
长度
02
宽度
03
高度
04
重量

VALUES表
OBJ_ID PID VALUE
OBJ1
01
5
OBJ1
02
3
OBJ1
03
3
OBJ1
04
8
OBJECT表
OBJ_ID OBJ_NAME
OBJ1
XXX1
这是表结构,数据都是瞎写的,现实中,参数表里有几百条记录,values表里有千万条记录,OBJECT表里有几十万记录,现在要带多个条件查询OBJECT,比如查长>1 宽>2 高>3的OBJECT
目前的写法是
SELECT obj.* from OBJECT obj where (select count(*) from VALUES v where v.pid=01 and v.value>1)>0 and(select count(*) from VALUES v where v.pid=02 and v.value>2)>0 and(select count(*) from VALUES v where v.pid=03 and v.value>3)>0
数据多了完全就悲剧了
高人给分析分析,有木有快一点的写法

回复

使用道具 举报

千问 | 2017-4-29 10:55:21 | 显示全部楼层
1、where 条件改为 exists
2、你给的sql 逻辑有问题。
回复

使用道具 举报

千问 | 2017-4-29 10:55:21 | 显示全部楼层
再排个序,小表放在最后面,大表放在最前面
values表···and 参数表```and OBJECT表
回复

使用道具 举报

千问 | 2017-4-29 10:55:21 | 显示全部楼层
再排个序,小表放在最后面,大表放在最前面
values表···and 参数表```and OBJECT表
回复

使用道具 举报

千问 | 2017-4-29 10:55:21 | 显示全部楼层
select count(*) 这个别要了
回复

使用道具 举报

千问 | 2017-4-29 10:55:21 | 显示全部楼层
多谢
用exists后果然快了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行