问题如下:
业务关系:航线,机场
航线,由一个起飞机场,一个降落机场,以及三个备降机场组成;
其中,起飞机场、备降机场不可为空,三个备降机场必须至少有一个存在且不存在优先级顺序。
航线表如下:
ID NUMBER(10) 航线ID
NAME VARCHAR2(24) 航线名字
TAKEOFFID NUMBER(10) 起飞机场
LANDID NUMBER(10) 降落机场
OCCATIONALID NUMBER(10) 备降机场2
OCCATIONALID2 NUMBER(10) 备降机场2
OCCATIONID3 NUMBER(10) 备降机场3
IMPORTIME DATE
机场表
ID NUMBER(10) 机场ID
NAME VARCHAR2(24) 机场名字
LON NUMBER(5,2) 经度
LAT NUMBER(5,2) 纬度
IMPORTTIME
具体应用:
在C#窗体中,点击“航线加载”,加载oracle数据库中的所有航线,并以列表形式按拼音字母升序显示,默认显示第一个航线的参数,具体包括航线名字,起飞,降落,备降机场的名字。
问题:
当航线超过一定数量时,比如大于30条时,航线数据加载速度明显较慢,请问各位大牛,如何设计这个SQL查询,以获得较快的查询速度?多谢
我的理解,是不是需要多次反复查询机场表,降低了查询速度?
1、C#窗体,Winform or WebForm?
2、机场数量是多少?
3、查询端到数据库服务器之间是什么速度的连接?
4、能够明确一下,不到30条的加载时间是多少MS?
5、大于30条是多少,比如60条,明显较慢,可以测试一下,是多慢,多少MS ?
6、你是怎么写SQL语句的?
1 是C#winform窗体;
2 机场数量在50个左右,后面会逐渐增加;
3 本地连接,oracle数据库部署在本机;
4 大概4秒左右;
刚开始的时候我用的多表连接查询,感觉有点慢,代码如下图:
随后,就改成先从航线表中查出起飞机场,降落机场以及备降机场的ID,再去查机场表查询机场名字,这样需要多次查询机场表,感觉更慢了
我在想可能用多表连接查询是更好一点,还有没有更有效的查询方法,用存储过程会不会更好一点。我说的4秒左右,使用第二种方法,但是用第一种方法,好像也不是太快,目前数据量不大,我担心随着数据量加大会越来越慢,还请大牛多多指导:)
我在想可能用多表连接查询是更好一点,还有没有更有效的查询方法,用存储过程会不会更好一点。我说的4秒左右,使用第二种方法,但是用第一种方法,好像也不是太快,目前数据量不大,我担心随着数据量加大会越来越慢,还请大牛多多指导:)
我晕,用手机拍了两张图片,上传后,貌似都看不清了,单位暂时上不了外网,请谅解。
@我是C#新手:
1、没有明白代码为什么不用贴的,用拍照的。
2、4秒明显是有问题的,我远程512K ADSL连接也从来没有超过1秒吧。
用的还是据无知网友说的性能很差的SQL SERVER。
3、你查询的数据出来有多少条,你确定这4秒是查询数据的时间,而不是UI渲染的时间?
没代码说个毛线
用手机拍了两张源码,好像看不清楚,我回复楼上的,请问您能看清不?