需求1: 查询出A表中数据,同时满足下面条件,是同时满足下面几个条件 1.B表(发车班期表)中符合当前时间的记录 2.C表(价格表)中满足当前时间,并且价格大于0元 3.D表(显示位置表)中2 = 1,3 = 1 4.A表中的记录要过滤掉name相同的 ----------------------------需求1 SELECT NAME,STATE DELETESTATE FROM A WHERE ID IN( SELECT a表_id FROM C WHERE start_time>=GETDATE() AND end_time <=GETDATE() AND PRICE >0 AND a表_id IN(SELECT a表_id FROM D WHERE 2=1 AND 3=1)--表A name 加索引--表C a表_id 加索引 start_time end_time 这两个建一个索引 price 建一个索引
D表结构需要修改
我目前用的方法是查询A、B表联合查询,然后得出结果集,
遍历这个结果集的时候,再去查询C表里面的数据,但是我总觉得这不科学,并且速度不是很快,
所以想寻找更好的方法
查询出A表中数据,同时满足下面条件,是同时满足下面几个条件
1.B表(发车班期表)中符合当前时间的记录
2.C表(价格表)中满足当前时间,并且价格大于0元
3.D表(显示位置表)中2 = 1,3 = 1
4.A表中的记录要过滤掉name相同的
----------------------------需求1
SELECT NAME,STATE DELETESTATE FROM A
WHERE ID IN(
SELECT a表_id FROM C WHERE start_time>=GETDATE() AND end_time <=GETDATE()
AND PRICE >0
AND a表_id IN(SELECT a表_id FROM D WHERE 2=1 AND 3=1)--表A name 加索引--表C a表_id 加索引
start_time end_time 这两个建一个索引
price 建一个索引
--表D a表_id加索引
2 3 这两个字段加索引
------------------------------------- 表A 1个索引 表C 3个 表D 2个需求2 为啥要三个表中的所有数据?
你这个已经是重复存放数据了 只取部分数据就可以了这样建索引 需求2 也会快点 你可以试试
如果还慢 我也没办法了