qingquan31 发表于 2007-10-29 13:50

刚刚学SQL,有些问题!

刚刚学SQL,有些不会用,希望大家不吝赐教!<BR>我的SQL数据库中有一个大约250万的数据库,每次用起来都非常慢,而且内存占用非常大,查询一次大概需要5分钟左右,而且查询完了他也不自动释放内存,不知道有没有什么方法解决?<BR>还有就是查询非常慢,有没有什么好方法,是不是建立一个索引能解决啊 ?该怎么建?是用命令还是在SQL数据库有一个设置可以建?<BR>头晕阿!!!

Kendy123456 发表于 2007-10-29 14:21

基本上可以判断 是你的数据库服务器硬件太差。。。或者说 运行SQL的时候 系统资源已经几乎被吃干净了<BR>效率再低 设计得再烂的数据库 也不至于跑一个简单查询5分钟 <BR><BR>另外 我不知道什么叫查询完了没释放内存。。。 你想它怎么样个释放内存法呢? <BR><BR>最简单的办法 备份数据库 拿到一台干净的机器上去还原  看看这种情况是否还存在, 就知道是不是数据库本身设计有问题了

purana 发表于 2007-10-29 14:32

250万级的数据..查询5分钟..甚至10几分钟..应该都不是见奇怪的事..<BR>你的数据库规范化是否合理..这也是很重要..<BR>当然了..设置了索引.查询起来.当然会有一定的加速..不过换来的代价就是数据库容量加大..还有插入,删除,更新.速度会变慢.<BR>

qingquan31 发表于 2007-10-29 15:41

<DIV class=quote><B>以下是引用<U>Kendy123456</U>在2007-10-29 14:21:42的发言:</B><br>基本上可以判断 是你的数据库服务器硬件太差。。。或者说 运行SQL的时候 系统资源已经几乎被吃干净了<br>效率再低 设计得再烂的数据库 也不至于跑一个简单查询5分钟 <br><br>另外 我不知道什么叫查询完了没释放内存。。。 你想它怎么样个释放内存法呢? <br><br>最简单的办法 备份数据库 拿到一台干净的机器上去还原  看看这种情况是否还存在, 就知道是不是数据库本身设计有问题了</DIV>
<P>我的机器是64位双核,512内存,不知道跑一边5分钟正常不?<br>我说的内存没有释放 指的是没有运行数据库前内存占用100M左右,一运行猛增加到400多接近500,运行结束了,还是有400+的占用,几乎没有释放。运行其他的也变得非常卡?有没有什么办法解决?</P>
[align=right][color=#000066][此贴子已经被作者于2007-10-29 15:49:15编辑过][/color][/align]

qingquan31 发表于 2007-10-29 15:47

<DIV class=quote><B>以下是引用<U>purana</U>在2007-10-29 14:32:41的发言:</B><BR>250万级的数据..查询5分钟..甚至10几分钟..应该都不是见奇怪的事..<BR>你的数据库规范化是否合理..这也是很重要..<BR>当然了..设置了索引.查询起来.当然会有一定的加速..不过换来的代价就是数据库容量加大..还有插入,删除,更新.速度会变慢.<BR></DIV>
<P>我用的是VFP客户端通过局域网调用SQL,VFP里是调用最简单的SELECT语句,例如<BR><BR>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 " <BR>select_return=SQLEXEC(lnhandle,select_sql,"select_cursor")<BR><BR>不知道还有没有什么优化的办法?<BR>还有,我不太清楚SQL索引的方法,是不是管理平台索引和命令索引是同一个效果?上边语句应用索引查询用不用什么改变?<BR><BR>谢谢各位大侠指教了<BR>对了,我的这个机器配置,一般都查询一次的时间在多少以内比较正常?</P>

bygg 发表于 2007-10-29 16:14

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

qingquan31 发表于 2007-10-29 16:21

2332227 条记录<BR>库结构是<BR>[attach]29661[/attach]<BR>不知道这样的库多长时间属于正常?现在太慢了,花了2个多月做出来的东西要使这个速度根本没法用!郁闷

Kendy123456 发表于 2007-10-29 17:36

<P>你在查询分析器下面做同样的查询也费这么长时间么?<BR>也同样占用系统资源并且不会释放么?<BR><BR>因为你的是最简单的查询语句 所以不会是SQL在负载问题引起的资源竞争或者是数据库死锁。你开发的程序在不调用数据库的情况下 系统表现是否正常呢?</P>

qingquan31 发表于 2007-10-30 10:22

<DIV class=quote><B>以下是引用<U>Kendy123456</U>在2007-10-29 17:36:25的发言:</B><BR>
<P>你在查询分析器下面做同样的查询也费这么长时间么?<BR>也同样占用系统资源并且不会释放么?<BR><BR>因为你的是最简单的查询语句 所以不会是SQL在负载问题引起的资源竞争或者是数据库死锁。你开发的程序在不调用数据库的情况下 系统表现是否正常呢?</P></DIV>
<P>似乎有些眉目了!<BR>我在查询分析器里边依然非常浪费时间,但内存应该能少占用20-40M左右。<BR>作了些测试,当用精确查询“=辽宁省”是非常快,大概3-5秒,内存占用比较少,但用模糊查询"LIKE %辽宁省%"时,速度非常慢,5-7分钟,而且内存占用也非常大,不知道有没有发放解决?<BR><BR>还有,昨天对"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”?</P>

purana 发表于 2007-10-30 10:29

虽然你的列是添加的索引.<BR>不过从你这个查询来看..是不会利用索引的..<BR><BR>..可以考虑用用全文检索..

qingquan31 发表于 2007-10-30 14:00

<DIV class=quote><B>以下是引用<U>purana</U>在2007-10-30 10:29:10的发言:</B><BR>虽然你的列是添加的索引.<BR>不过从你这个查询来看..是不会利用索引的..<BR><BR>..可以考虑用用全文检索..</DIV>
<P>全文索引 ? 这个适用于我这个情况吗?基本上我只要搜索file_name一个字段就可以,做多不过3个字段的组合。<BR>全文索引怎么设置?也是在表上右击-〉所有任务-〉管理索引吗?没有看到有全文索引啊?<BR><BR>我用的查询语句对不对,那位大侠可以告诉以下,建立索引以后语句用不用改变?</P>

zhqifshy 发表于 2007-11-5 19:03

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

DasayHaoEr 发表于 2007-11-8 19:33

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

页: [1]

编程论坛