200分求一个数据库效率问题

vivisogood 2003-10-15 04:18:00
我做的系统里面有个
erar表示面积字段
select count(*),sum(erar) from table
如果是table是一张表。速度是很快的 1秒种以内。

如果是三张表到5张表的联合的话 数据为什么慢的很啊。
(记录数大概是10多万条)

我用了视图和最优化索引但是效率都很低的大概要10秒种

有谁能提供好的方法解决啊!!
...全文
40 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivisogood 2003-10-24
  • 打赏
  • 举报
回复
帮忙up
up给分
vivisogood 2003-10-23
  • 打赏
  • 举报
回复
up
yeena 2003-10-20
  • 打赏
  • 举报
回复
关注一下 我也马上遇到这个问题,我也很想知道答案,麻烦楼主在解决之后在这里说下答案,万分感谢~!
feirulin 2003-10-20
  • 打赏
  • 举报
回复
一。要优化数据库,比如字段的长度和数据类型的设置,适当时应该允许一些冗余存在,这样
可以避免对多表进行查询而影响速度。当然冗余不可过量啦!!!

二。优化SQL语句,尽量提高SQL语句的执行效率。

三。根据需要,适当保存一些查询结果。当第一次查询完成后保存其结果,到下次查询时就 可 以 直接调用,而不必重新查询。

暂时就这么多,想到再来发!!!
vivisogood 2003-10-17
  • 打赏
  • 举报
回复
那大家能不能畅谈一下联合查询以及相关统计的优化问题吗?
好的意见的话,不过给分还维护FAQ让你加信誉分哦!
injoo 2003-10-15
  • 打赏
  • 举报
回复
能说说这几张表的关系吗?
为什么求面积要表连接?

如果是完全一样的表,不同的记录不要表连接。

比如用pubs的titles表做例,
如果里面有几个titiles表,每一个都有price字段,
保存书的价格,现在你要计算他们的总价:
select (select sum(price) from titles) + (select sum(price) from titles)。
count(*)一样 !!!!!!!!!!
vivisogood 2003-10-15
  • 打赏
  • 举报
回复
晕! 不讨论这个先!

我关心的是怎么提高效率! 不管多表还是视图!

select count(*) from view 说它慢它还真的没有蜗牛快!
lihua9666 2003-10-15
  • 打赏
  • 举报
回复
vivisogood(新人类)别在sql语句上下功夫了,大概没有用了,考虑一下别的途径吧,我也帮你想想。
lihua9666 2003-10-15
  • 打赏
  • 举报
回复
视图采用的方法就是多表联合
vivisogood 2003-10-15
  • 打赏
  • 举报
回复
TO lihua9666(木子华)
用视图效率肯定低,因为试图是虚拟的不是真正的表,它内部也是通过一组sql形成,只是视觉上看上去是一个表,实现了操作的方便性,并不能提高效率。

这个我当然知道了。
但是多表联合也是一样的慢啊。 现在是怎么让它效率提高而不是那个快慢问题。呵呵!!!
vivisogood 2003-10-15
  • 打赏
  • 举报
回复
To: tigerwen01(小虎)(编程艺术化)
第一,要优化T-SQL语句。

我问的就是这里啊

第二设置RECORDSET属性
asp里面就不要说了。我可以用写字板直接写复杂asp程序了!呵呵!!!
lihua9666 2003-10-15
  • 打赏
  • 举报
回复
用视图效率肯定低,因为试图是虚拟的不是真正的表,它内部也是通过一组sql形成,只是视觉上看上去是一个表,实现了操作的方便性,并不能提高效率。
vivisogood 2003-10-15
  • 打赏
  • 举报
回复
其实就是 select count(*) from 最大的table
和 select count(*) from 视图或多表联合
我要用到 sum和count等等几个统计,
先不管后面的条件
大家都可以去试试
count(*) 表 和count(*) 多表 。到底怎么样才能让多表的效率提高起来。(数据量越多数据差距越大)
vivisogood 2003-10-15
  • 打赏
  • 举报
回复
我就是select count(*) from 最大的table 速度是1秒以内
select count(*) from view视图用了最优化的索引 但是要10多秒了!
因为带了n多的查询条件所以必须 多张表联合查询。
把能够限制范围的越小的条件放在where 的最近(先过滤调大部分数据)这个我做了!

但是我也不知道瓶颈到底在那里。有没有办法提高效率!
lihua9666 2003-10-15
  • 打赏
  • 举报
回复
能把sql语句贴出来看看吗?
vivisogood 2003-10-15
  • 打赏
  • 举报
回复
现在先不进程序里面就在sqlserver的查询分析器里面
我希望sql语句上的优化
tigerwen01 2003-10-15
  • 打赏
  • 举报
回复
第一,要优化T-SQL语句。
第二,设置RECORDSET属性。
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.CursorLocation = 3'adUseClient '这样设置可减轻数据库负载
Rs.CursorType = 3'adOpenStatic '游标需要前后移动,不能设为仅向前
Rs.CacheSize = RecordPerPage '设置这个选项会提高性能

Rs.Open SQL,Conn, , , adCmdText

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧