注册 登录
编程论坛 SQL Server论坛

刚刚学SQL,有些问题!

qingquan31 发布于 2007-10-29 13:50, 1297 次点击
刚刚学SQL,有些不会用,希望大家不吝赐教!
我的SQL数据库中有一个大约250万的数据库,每次用起来都非常慢,而且内存占用非常大,查询一次大概需要5分钟左右,而且查询完了他也不自动释放内存,不知道有没有什么方法解决?
还有就是查询非常慢,有没有什么好方法,是不是建立一个索引能解决啊 ?该怎么建?是用命令还是在SQL数据库有一个设置可以建?
头晕阿!!!
12 回复
#2
Kendy1234562007-10-29 14:21
基本上可以判断 是你的数据库服务器硬件太差。。。或者说 运行SQL的时候 系统资源已经几乎被吃干净了
效率再低 设计得再烂的数据库 也不至于跑一个简单查询5分钟

另外 我不知道什么叫查询完了没释放内存。。。 你想它怎么样个释放内存法呢?

最简单的办法 备份数据库 拿到一台干净的机器上去还原 看看这种情况是否还存在, 就知道是不是数据库本身设计有问题了
#3
purana2007-10-29 14:32
250万级的数据..查询5分钟..甚至10几分钟..应该都不是见奇怪的事..
你的数据库规范化是否合理..这也是很重要..
当然了..设置了索引.查询起来.当然会有一定的加速..不过换来的代价就是数据库容量加大..还有插入,删除,更新.速度会变慢.
#4
qingquan312007-10-29 15:41
以下是引用Kendy123456在2007-10-29 14:21:42的发言:
基本上可以判断 是你的数据库服务器硬件太差。。。或者说 运行SQL的时候 系统资源已经几乎被吃干净了
效率再低 设计得再烂的数据库 也不至于跑一个简单查询5分钟

另外 我不知道什么叫查询完了没释放内存。。。 你想它怎么样个释放内存法呢?

最简单的办法 备份数据库 拿到一台干净的机器上去还原 看看这种情况是否还存在, 就知道是不是数据库本身设计有问题了

我的机器是64位双核,512内存,不知道跑一边5分钟正常不?
我说的内存没有释放 指的是没有运行数据库前内存占用100M左右,一运行猛增加到400多接近500,运行结束了,还是有400+的占用,几乎没有释放。运行其他的也变得非常卡?有没有什么办法解决?

[此贴子已经被作者于2007-10-29 15:49:15编辑过]

#5
qingquan312007-10-29 15:47
以下是引用purana在2007-10-29 14:32:41的发言:
250万级的数据..查询5分钟..甚至10几分钟..应该都不是见奇怪的事..
你的数据库规范化是否合理..这也是很重要..
当然了..设置了索引.查询起来.当然会有一定的加速..不过换来的代价就是数据库容量加大..还有插入,删除,更新.速度会变慢.

我用的是VFP客户端通过局域网调用SQL,VFP里是调用最简单的SELECT语句,例如

select_sql="select file_name as 文件名称, file_path as 文件路径, file_type as 文件类型, file_clime as 文件区域, file_trade as 文件行业, user_date as 文件日期 from ird_database where "
select_return=SQLEXEC(lnhandle,select_sql,"select_cursor")

不知道还有没有什么优化的办法?
还有,我不太清楚SQL索引的方法,是不是管理平台索引和命令索引是同一个效果?上边语句应用索引查询用不用什么改变?

谢谢各位大侠指教了
对了,我的这个机器配置,一般都查询一次的时间在多少以内比较正常?

#6
bygg2007-10-29 16:14

这个也难说啊,还得根据数据量大小来定呢.

#7
qingquan312007-10-29 16:21
2332227 条记录
库结构是
只有本站会员才能查看附件,请 登录

不知道这样的库多长时间属于正常?现在太慢了,花了2个多月做出来的东西要使这个速度根本没法用!郁闷
#8
Kendy1234562007-10-29 17:36

你在查询分析器下面做同样的查询也费这么长时间么?
也同样占用系统资源并且不会释放么?

因为你的是最简单的查询语句 所以不会是SQL在负载问题引起的资源竞争或者是数据库死锁。你开发的程序在不调用数据库的情况下 系统表现是否正常呢?

#9
qingquan312007-10-30 10:22
以下是引用Kendy123456在2007-10-29 17:36:25的发言:

你在查询分析器下面做同样的查询也费这么长时间么?
也同样占用系统资源并且不会释放么?

因为你的是最简单的查询语句 所以不会是SQL在负载问题引起的资源竞争或者是数据库死锁。你开发的程序在不调用数据库的情况下 系统表现是否正常呢?

似乎有些眉目了!
我在查询分析器里边依然非常浪费时间,但内存应该能少占用20-40M左右。
作了些测试,当用精确查询“=辽宁省”是非常快,大概3-5秒,内存占用比较少,但用模糊查询"LIKE %辽宁省%"时,速度非常慢,5-7分钟,而且内存占用也非常大,不知道有没有发放解决?

还有,昨天对"FILE_NAME"字段建立了个索引,索引名字IRD_INDEX,今天试验为什么不但没有快,反也还慢了 ,我没有用过,应用索引的语句还用不用改 ?比如 原来的是:"select file_name as 文件名称,file_path as 文件路径, file_type as 文件类型, file_clime as 文件区域 where file_name like '%辽宁省%' "用不用将file_name 替换成“IRD_INDEX”?

#10
purana2007-10-30 10:29
虽然你的列是添加的索引.
不过从你这个查询来看..是不会利用索引的..

..可以考虑用用全文检索..
#11
qingquan312007-10-30 14:00
以下是引用purana在2007-10-30 10:29:10的发言:
虽然你的列是添加的索引.
不过从你这个查询来看..是不会利用索引的..

..可以考虑用用全文检索..

全文索引 ? 这个适用于我这个情况吗?基本上我只要搜索file_name一个字段就可以,做多不过3个字段的组合。
全文索引怎么设置?也是在表上右击-〉所有任务-〉管理索引吗?没有看到有全文索引啊?

我用的查询语句对不对,那位大侠可以告诉以下,建立索引以后语句用不用改变?

#12
zhqifshy2007-11-05 19:03

数据量大,如果只对这个表进行查询功能(比如常用file_name字段),可以在file_name字段上加一个聚集索引可以加快检索速度,
查询语句是不用修改的。

#13
DasayHaoEr2007-11-08 19:33

建立索引要使查询的速度变快的话,是唯一索引.但是只对于查询会变快,所带来的其它方面的性能会有所减弱.
建索引在企业管理器中与在查询分析器中是一样的效果的

1