如何查询的效率更高,更节省资源?

来源:百度知道 编辑:UC知道 时间:2024/06/11 14:28:30
现在有一个火车站列车数据库,具体结构如下:

列车车次 站名 到站时间 ...
k85 广州 18:48 ...
k85 东莞东 19:55 ...
k85 惠州 20:41 ...
... ... ...
1101 郑州 14:15 ...
1101 上街 14:45 ...
... ... ... ...

我现在要查询某火车站到另一车站的所有列车,如:能从广州到北京的所有列车,请问用什么方法查询最高效,最省资源?
我的初步想法是先查询”站名”字段中含有”北京”的记录,再根据得到的记录查询相同列车里”站名”字段中是否有”广州”.

id | type
------------------
p1 | x
p2 | y
p1 | x
----------------
select id from test where id in (select id from test where type='x') and type='y'
----------------------------------------------------------
你的问题和这个类似,你看下

select 列车车次 from table1
where 站名='北京' and 站名='广州'
绝对查不出来一辆车的,没有站点同时为"北京"和"广州"的行哦
应该是:
select 列车车次 from 表 where 车次 in(select 车次 from 表 where 站名='北京') and 站名='广州'
还可以用自连接查询
但是如果说效率的话,上面写的子查询要比自连接查询效率高。

select 列车车次 from table1
where 站名='北京' and 站名='广州'
整那么麻烦干嘛,就这句不就好了?

先找出有北京站的车次,再在这些这次里找有广州的。
因为以车次为关键字,将极大提高查询速度