Sql Server中一张表中有300万条记录;已经针对某一个特定的查询做了优化,如果从SqlServer的客户端或者自己写的Java测试程序中执行该查询,耗时在6秒之内。
但是(可恶的但是),如果在Tomcat中连的话,则需要1个小时!奇怪的是,最后这个查询还真能返回结果,只是要等上一个小时!
初步的分析结果:
1. 查询返回的结果本身不大,100字节以内,排除了tomcat使用的jvm内存太小的问题。
2. 最后能返回结果,排除了数据库连接的问题。
3. 在一个2万行记录的数据表上跑的时候效果非常好,说明是因为表太大的原因。
4. 从log和程序源代码来看,程序的确是一直在执行这一查询,没有引起另外操作,排除了并发导致系统繁忙的原因。
这样的话,实在是想不明白了,到底是哪里有问题呢?
Tomcat对数据库连接有些特殊的设置?或者从Jsp发送到SqlServer上的查询请求会被特殊对待(例如,查询中不允许使用索引?但是即使没有索引,裸查的话1分钟之内也能返回结果呀!)?
先谢谢了:)
--
修改:stringboy FROM 211.100.22.*
FROM 211.100.22.*