如何提高查询速度?(20分)

  • 主题发起人 hgl780428
  • 开始时间
H

hgl780428

Unregistered / Unconfirmed
GUEST, unregistred user!
我的数据库中一个表里有50万条记录,查询起来老慢,要好几分钟,如何提高查询速度?
我一电击,结果马上就出来
 
在要查询的字段上建立索引
 
什么数据库?
 
搜索一下,类似的帖子很多
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1295933
 
0. 选择合适的数据库保存数据。
1. 建立查询相关字段的索引。最好和查询方式保持统一。
2. 选择合适的索引,关闭其他索引。
3. 优化查询语句。(这点对查询速度影响最大!)。
50万条记录,小case,如果查询速度慢,肯定是索引设计选择不好,查询语句效率太低,
优化!
特别的情况:如果查询很复杂,采用索引+sql的方式效率低于从头到尾遍历所有数据记录,
这种情况我遇到过,关闭全部索引,从头遍历数据,同时完成多项目查询、计算和统计,
总的时间小于多个项目的多次查询总时间。()
 
我们用的是SQL SERVER 2000
 
索引没建好,用查询分析器分析一下
 
你好,Newman0816

说具体点好吗,我现在用的是SQL SERVER 2000,我们做的是提图书管理系统,总书目库这个表中有

50万条记录,我想查询一本书,查询的时间将要一个分钟左右,这样的话很慢,满足不了要求,请问你说你遇到过这样的情况,你是如何解决的,多谢谢了,很急用
 
1、优化查询语句
2、建立书目分类
 
不错,优化查询语句,
不但是查询的,而且包括滚动、显示的那些内容。
个人见解。
当然,也要试改控件的属性,以及建立索引。
 
没有人会想一下子将50万条记录一下子查询出来,就是全摆在屏幕上你看的完吗?
所以你的问题可以转换为第一屏显示的速度,然后让用户一屏一屏地翻页查找!一般
情况下一屏显示二十~五十条记录就够了,而二十~五十条记的查询可以做到用户基本
上感觉不到等待,你自已做为用户去感受一下,当一屏显示50万条记录时你会看几条?
 
只读,向前游标,好像会快点
 
50万?好多呀
SQL Server应该没问题,优化SQL语句,别怕麻烦要是不行可以试试让SQL Server使用
多个数据文件,好像会块很多,当然要有合理的索引
 
50万条,没道理慢的,
没办法就试一下存储过程,要不是服务器太低档了把
 
wind 2000

请问如何做呀,分屏,我用的是DBGEID,显示,查询用ADOQUERY

急用
 
我没用过SQL Server数据库,我在这用Oracle说明一下:
1.给表加一个字段,ID VARCHAR2(8) //8位数就是一亿条记录,如果不够可以自定义
2.每写入一条数据ID自增1,Oracle没有自增字段这很不方便,我想SQL Server可能会好一点
3.假设一屏显示20条记录,表名:bbs
4.定义一全局变量用来保存当前显示这一屏的最后一条记录的ID号,初始值为0:
var iLast: longint = 0;
5.显示一屏的SQL语法:
select * from bbs where rownum<=20 and ID>iLast;
注:rownum是Oracle中特有的伪列,平时查询时不会显示出来,rownum<=20表示:只显示
查询到数据的前20条记录
6.记录下当前这一屏的最后一条记录的ID号,将它赋给iLast,用同样的语法就可以显示下一屏了
7.如果想显示上一屏,则就记录一下当前屏的第一条记录的ID号,SQL语法中只要将ID>iLast改成
ID<iLast就行了。
8.这样就可以很方便地做到上下翻屏,而且速度是用户可以接受的。
 
多人接受答案了。
 
顶部