jdbc连接数据库做查询。我的SQL是这样的
String sql = select * FROM AAT where airlinetype =1 and sourece>1
union select * FROM ACX where airlinetype =1 and sourece>1
union select * FROM AEB where airlinetype =1 and sourece>1
union select * FROM AKA where airlinetype =1 and sourece>1
...........
一共连接了100多个吧。他们的结构都一样。这样返回的数据一共有10多W条吧。在java代码我执行到ResultSet rs =st.executeQuery(sql);速度缓慢,查询结果不能显示。请问大家如何解决啊?1.分页吗?很多张表相连,怎么分页?没弄过,大家指导一下啊?2.通过statement.setMaxRows()来限制返回行数的数量。如果这里我设置返回5000条,那后面的那样数据怎么得到?不太会用statement.setMaxRows()求救了,大家帮帮忙啊?或者是其他的思路。
String sql = select * FROM AAT where airlinetype =1 and sourece>1
union select * FROM ACX where airlinetype =1 and sourece>1
union select * FROM AEB where airlinetype =1 and sourece>1
union select * FROM AKA where airlinetype =1 and sourece>1
...........
一共连接了100多个吧。他们的结构都一样。这样返回的数据一共有10多W条吧。在java代码我执行到ResultSet rs =st.executeQuery(sql);速度缓慢,查询结果不能显示。请问大家如何解决啊?1.分页吗?很多张表相连,怎么分页?没弄过,大家指导一下啊?2.通过statement.setMaxRows()来限制返回行数的数量。如果这里我设置返回5000条,那后面的那样数据怎么得到?不太会用statement.setMaxRows()求救了,大家帮帮忙啊?或者是其他的思路。
select * 的效率也是很低的
你从这两个方面先优化试试
JDBC数据库分页首先要看你是什么数据库 网上例子很多
select * FROM AAT
union select * FROM ACX
union select * FROM AEB
union select * FROM AKA
union 100多个继续...
) t where t.airlinetype = 1 and t.sourece>1
可以将该段SQL建立视图。
我认为fzdxwhl2007 的想法可行,使用临时表,
先将这些表中的数据都放到一个临时表中,(注意插入时最好用批量插入,这样快)
并对相关条件涉及到的列设置索引。
最后查询这张临时表。
sqlserver 中分页使用的语句是
select * from (
select top n * from(
select top n + skip *
from table
order by sort_col desc
)
order by sort_col asc
)
as any_name
order by sort_col desc;
不可以去掉这个排序的子句,这段sql 是从书上找的。
top表示要查询的条数,top + skip表示要查询的那一段数据:
如: 总共查询出来了 200条(top+skip)
但你只要180-200 这20条数据, 那么top就是20,
具体思路是: 先查询前200条,再反向排序将要的20条弄到最前面,
然后从200条,选出前20条,就是正常顺序的第180-200这20条数据了。
(老实说:我没用过sql server 的sql,但上面的思路绝对没问题)
希望能帮到你.
把里面的 * 都换成具体的列名,这个影响速度,用 * 时数据库需要经过转换,更别说那么多 * 。
sql语句,要么都大写要么都小写,大小写很影响查询效率,每次数据库都要重新编译。
较频繁查询,建议用同义词。