我怎么才能快速返回一个数据集中的一部分数据(SQL)(100分)

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

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
我的SQL语句返回的结果集大约有1000条记录,我只想服务器返回其中
特定记录范围的记录,如第20-30条记录,怎样做最好?
 
TClientDataSet中有PacketRecords 属性,利用之~
 
TClientDataSet中的PacketRecords是可返回,但这个返回也是在SQL服务器
的数据集的基础上返回的,若我的实际数据集很大时,SQL服务器的开销还
是不可避免的,TClientDataSet的PacketRecords主要是用来解决网络传输
问题的,而我的意思是减少SQL服务器的工作量或者说控制数据集的记录数。
 
写存储过程吧,先吧你查询的结果放到一个临时表里面,然后在拥游标处理吧,或者剑一个临时
表,其中有一个自增的字段,吧查询结果放入临时表以后 用where id>? and id<?
 
我以前遇到过这样的问题!
我也是从大富翁(温柔一刀)那儿学来的!:》
select top 10 * from Table where ID_Table not in
(select top 10 ID_Table from Table order by ID_Table) order by ID_Table
--------------------------------------------
这样的结果就是20-30的记录了!这样你还可以做你自已的PacketRecords!呵呵!
 
你可以用它一下子传几百条记录先传到本地!在本地再来一次显示10条!
用完了,再从服务器传下一个几百条!(这样服务器就
轻松多了!)
 
To Sandao:
select top 10 * from Table where ID_Table not in
(select top 10 ID_Table from Table order by ID_Table) order by ID_Table
--------------------------------------------
能解释清楚点吗?
 
ID_Table是你表中的唯一关键字!
就是找到不包括前10条记录的前10条记录!就是11-21条记录!
啊,怪不得,上次写错了,20-30应该是:
select top 10 * from Table where ID_Table not in
(select top 19 ID_Table from Table order by ID_Table) order by ID_Table
懂了吗?:》
 
别忘了加两个'order by ID_Table',不然可能就不灵了!:》
 
SanDao的写法没问题,但用到not in 速度总是很慢,看看下面这写法是否好点?

Select Top 10 *
from (select top 30 * from Table order by ID_table) as aa
Order by ID_table Desc

这样取到的数据是30-20条数据。
:)
 
>>Dolly
慢?还好的呀!我的挺快的,真的!:》(可能比你的慢!)

(我的方法只要你的第一个Top的数量不大,速度并不是问题!你试试!)
Dolly兄的也没错的!
建升,降序两个索引!可以的!
顺便说一下,SQL语句是先排序再Top的,不知倒过来要不要紧啊!:》
 
>>Dolly
你是女生啊!长的像洋娃娃吗?:》
以后在DFW上要多交流,一起进步啊!:》
 
To SanDao:
首先,我是女生:)
其次,我在一个记录数为16万的表中做的测试。:)
最后,SQL是先排序再TOP,无论是正序或者倒序。:)
 
>> Dolly
1.刚知道!:》(我是男生,不过水平未必有你高)
2.麻烦了,谢谢!现在知道了!:》(很感谢啊!)
3.上贴中我的意思是想问他这样倒过来排序显示要不要紧!:》

 
多人接受答案了。
 
>>yanghaijun
上当,上当,yanghaijun兄!方法绝对是我的快!
我虽然没在16万条记录中试,但我在6万条记录中试验了!
发现如果取数据的初始几十条或几百条时,Dolly的方法的确比我快!(小数据量的倒排序还是比我的not in快)
但当取数据的比如:20000-20010时,呵呵,Dolly的方法比我慢了一倍!(大数据量的倒排序效率太差了)
----------------------------------------------
>>Dolly你好
大数据量的倒排序还是不可取的呀!
----------------------------------------------
 
To SanDao:

曾经一直以为一个西瓜切三刀只能分成六块,最近才发现能分成八块,呵呵。

我怎么也觉得是六块呀。
 
>>Dolly --- 我怎么也觉得是六块呀
切六块也没有错,哈哈,你爱怎么切就怎么切呀 :》你高兴还好切成四块,五快,呢!
不过你要是能切出其它数字,那就太好玩了!(直线啊,不能耍赖的)

有空请你吃西瓜! :》
 
To SanDao:
今天晚上回家买个西瓜练练。:)
哪天请我吃?我得提前腾空肚子,最近贴秋膘贴的肚子里没空座了。
 
>>Dolly 贴秋膘(贴球票)
那是什么东西?
嘻嘻...慢慢练!
你有email or qq吗?请你吃的时候好通知你啊!:》
 
后退
顶部