3个回答
展开全部
1、升级硬件
2、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。
3、扩大服务器的内存
4、增加服务器CPU个数
5、对于大的数据库不要设置数据库自动增长,它会降低服务器的性能
6、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。
7、查询时不要返回不需要的行、列
8、用select top 100 / 10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行
9、在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数
10、一般在GROUP BY 个HAVING字句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作。他们的执行顺序应该如下最优:
select的Where字句选择所有合适的行,Group By用来分组个统计行,Having字句用来剔除多余的分组。这样Group By 个Having的开销小,查询快.对于大的数据行进行分组和Having十分消耗资源。如果Group BY的目的不包括计算,只是分组,那么用Distinct更快
11、一次更新多条记录比分多次更新每次一条快,就是说批处理好.
2、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。
3、扩大服务器的内存
4、增加服务器CPU个数
5、对于大的数据库不要设置数据库自动增长,它会降低服务器的性能
6、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。
7、查询时不要返回不需要的行、列
8、用select top 100 / 10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行
9、在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数
10、一般在GROUP BY 个HAVING字句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作。他们的执行顺序应该如下最优:
select的Where字句选择所有合适的行,Group By用来分组个统计行,Having字句用来剔除多余的分组。这样Group By 个Having的开销小,查询快.对于大的数据行进行分组和Having十分消耗资源。如果Group BY的目的不包括计算,只是分组,那么用Distinct更快
11、一次更新多条记录比分多次更新每次一条快,就是说批处理好.
展开全部
这个原因太多了。
1、应用与数据库是否在同一台机器上?
如果是的话,这也有可能造成硬件的压力特别是PC机器。
2、是否是广域网?
如果是的话,网络也会带来连接数据库反应慢的问题。
3、采用连接数据库方式是什么方式?
有Native(JDBC)、ODBC、JNDI。这个区别没多大。
4、程序语言是否正确?
这个主要是你自己在开发的过程中连接数据库时有没有进入死循环啊什么的等等。
总结:
关于你这个问题原因还是蛮多的。不过最主要的还是看第四点。
1、应用与数据库是否在同一台机器上?
如果是的话,这也有可能造成硬件的压力特别是PC机器。
2、是否是广域网?
如果是的话,网络也会带来连接数据库反应慢的问题。
3、采用连接数据库方式是什么方式?
有Native(JDBC)、ODBC、JNDI。这个区别没多大。
4、程序语言是否正确?
这个主要是你自己在开发的过程中连接数据库时有没有进入死循环啊什么的等等。
总结:
关于你这个问题原因还是蛮多的。不过最主要的还是看第四点。
追问
我想一直保持数据库打开状态,因为我觉得第一次访问网页有延迟是因为打开数据库的原因,打开后就没有延迟了,请问一直保持数据库打开状态是只要去掉close()方法就行吗?这样做可以吗?
追答
我觉得最好不要这样,这样很占内存的,如果访问多的话,我建议你使用连接池吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建立数据库的时候尽量避免约束,只保留主键和外键,还有就是程序的优化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询