面试题,谁会做?(0分)

  • 主题发起人 主题发起人 ygq
  • 开始时间 开始时间
Y

ygq

Unregistered / Unconfirmed
GUEST, unregistred user!
从10万笔记录的客户档案中查询出年龄大于30的资料可以用以下SQL语句:
SELECT ID,NAME,Age FROM Customer WHERE Age>30
但因数据量太大,故要求每次只传送10笔记录给用户,用户可以翻上/下页继续。
请叙述你的实现方法(要写出有代表意义的SQL语句),以使网络上数据传输量尽量小
 
midas,由此功能
 
关联数据库控件。用DBGRID 显示 。语句相同。
例:MyQuery 为你的控件。DBGRID 和 DATASOURSE 设置好。
刚查出时。MyQuery。FIRSE 指向第一条。MyQuery.move(10) 为每次移动 10行
Are you OK? :)
 
zengmj的方法不能达到减少网络传输的问题,据我所知,要实现这个功能必须使用
midas技术,Tclientdataset有一个属性,可以设置从应用服务器取回数据的多少!
详情请见李维《分布式多层应用系统篇》
 
用ADO吧,原生的ADO对象中有一个RecordSet对象,它有三个属性:AbsolutePage、PageCount、
PageSize,光看名字你就应该知道可以解决你的问题了吧 :)
 
对呀,在 ASP 里面也这样用啊:PageSize
 
典型的三层问题,以前讨论过的,查查看吧。
 
用oracle可以实现,一行SQL
用Tbatchmove也可以实现,10行代码
用TTable也可以实现,100行以内代码
 
同志们,好象是要求用SQL语句来做的啊。:)
 
mysql mssql也可以用sql解决的
 
>>oracle可以实现
where rownum<=10
?
 
ADO的分页只是影响显示,不会对减少下载量有用处,有用的是cachesize

我有一点疑惑:
MIDAS中由中间层到客户端是可以控制传输量,但是此时数据库到中间层呢?
是不是中间层也只从数据库端取回了指定的数据量?
 
zengmj说得很对啊,每次MyQuery.move(10)就可以了,把相应的10条记录送到客户端
这跟cache也好,ado的pagecount,都完全没关系啊
>是不是中间层也只从数据库端取回了指定的数据量?
中间层不可能只取10记录,要取10*n条记录(n为第几页)
 
使用数据库提供的Cursor,结合Fetch实现。
 
To:左轻候
我也是这样认为的
经常在论坛上看到有人建议用3层结构的分段存取来解决大数据量的问题,我觉得不大可能。

不过真要是碰见大数据量的存取该如何处理呢?比如用你的离线浏览数据库的几十万条数据
在本地处理的速度不堪忍受,我把数据导入了小服务器里速度立刻提高,但是第一次下载也
要1分钟,放在4CPU的服务器上才能浏览正常。是不是碰上了大数据量都得用高级服务器呢?
还是有别的什么技巧和方法?
 
我有一个技巧,服务端可以每次取少量数据,客户端浑然不觉。
要知其中奥妙:想要着开出分来(无用不要分)
 
guqs,你要多少?开个价,然后贴答案
 
我也想知道
 

Similar threads

S
回复
0
查看
859
SUNSTONE的Delphi笔记
S
S
回复
0
查看
784
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部