(问题解决再追加100分)sql server存储过程实现查询数据条数过大,分页查询怎么实现?

(问题解决再追加100分)sql server存储过程实现查询数据条数过大,分页查询怎么实现?,第1张

按说5-8w这样数量级的数据没有问题,写入Excel是布比较耗性能,主要还是要通过优化写入Excel的代码效率上去考虑。你可以考虑利用分批查询写入的方式来避免一次写太多的数据到Excel:将你的查询结果分段,比方你的语句中能不能用时间来认为分段,每次返回部分结果。
回到你的问题,对大数据量查询的解决方案有以下两种:
(1)、将全部数据先查询到内存中,然后在内存中进行分页,这种方式对内存占用较大,必须限制一次查询的数据量。
(2)、采用存储过程在数据库中进行分页,这种方式对数据库的依赖较大,不同的数据库实现机制不通,并且查询效率不够理想。以上两种方式对用户来说都不够友好。

2.解决思路
通过在待查询的数据库表上增加一个用于查询的自增长字段,然后采用该字段进行分页查询,可以很好地解决这个问题。下面举例说明这种分页查询方案。
(1)、在待查询的表格上增加一个long型的自增长列,取名为“queryId”,mssql、sybase直接支持自增长字段,oracle可以用sequence和trigger来实现。然后在该列上加上一个索引。
添加queryId列的语句如下:
Mssql: [QUERYID] [bigint] IDENTITY (1, 1)
Sybase: QUERYID numeric(19) identity
Oracle:
CREATE SEQUENCE queryId_S
INCREMENT BY 1
START WITH 1
MAXVALUE 999999999999999 MINVALUE 1
CYCLE
CACHE 20
ORDER;
CREATE OR REPLACE TRIGGER queryId_T BEFORE INSERT
ON "test_table"
FOR EACH ROW
BEGIN
select queryId_Snextval into :newqueryId from dual;
END;
(2)、在查询第一页时,先按照大小顺序的倒序查出所有的queryId,
语句如下:select queryId from test_table where + 查询条件 +order by queryId desc 。
因为只是查询queryId字段,即使表格中的数据量很大,该查询也会很快得到结果。然后将得到的queryId保存在应用服务器的一个数组中。
(3)、用户在客户端进行翻页 *** 作时,客户端将待查询的页号作为参数传递给应用服务器,服务器通过页号和queyId数组算出待查询的queyId最大和最小值,然后进行查询。
算出queyId最大和最小值的算法如下,其中page为待查询的页号,pageSize为每页的大小,queryIds为第二步生成的queryId数组:
int startRow = (page - 1) pageSize
int endRow = page pageSize - 1;
if (endRow >=queryIdslength)
{
endRow = thisqueryIdslength - 1;
}
long startId =queryIds[startRow];
long endId =queryIds[endRow];
查询语句如下:
String sql = "select from test_table" + 查询条件 + "(queryId <= " + startId + " and queryId >= " + endId + ")";
3.效果评价
该分页查询方法对所有数据库都适用,对应用服务器、数据库服务器、查询客户端的cpu和内存占用都较低,查询速度较快,是一个较为理想的分页查询实现方案。经过测试,查询4百万条数据,可以在3分钟内显示出首页数据,以后每一次翻页 *** 作基本在2秒以内。内存和cpu占用无明显增长。

以上也仅仅是分页查询结果查看的问题,你需要写入到Excel的话还需要考虑Excel写入代码的执行效率,这部分是很值得研究的。

精心整理的歌曲 每首都听过
01us against the world不顾一切西城男孩 02let me show you the way natasha thomas
04i'm just a little bit shynatasha thomas
05save your kisses for me (single version)natasha thomas
06skin deepnatasha thomas
07sunshine after rainnatasha thomas
08why (does your love hurt so much)natasha thomas
09chasing love natasha thomas
10 stairway to heavenled zeppelin
12 Con il tuo nome(顶)
13bryan adams--here i am
14With an Orchid和兰花在一起- 雅尼(顶)
14诸神之诗 姬神
15一人静 姬神
16craigie hillcara dillon传说感动了整个爱尔兰]
17a perfect indiansinead o'connor
18Give Me Some Love-James Blunt
19I Will Be Your Shelter-Rebecca Blaylock
20Midnight Fantasy 维多利亚
21Spanish Eyes-后街男孩
22gone_with_the_sin
23Fall Again glenn lewis
24A Place Nearby-Lene Marlin
25proud of you(挥着翅膀的女孩英文原装版)
26
angel 可儿家族the corrs
27天使消逝的地方
28One and ever love唯一的爱gareth gates葛瑞盖斯
29anyone of us 葛瑞盖斯
30with you all the time 葛瑞盖斯
31what my heart wants to say 葛瑞盖斯
32say it isn't so 葛瑞盖斯
33too soon to say goodbye 葛瑞盖斯
34fool again 西城男孩westlife
35if i let you go西城男孩westlife
36i lay my love on you西城男孩westlife
37soledad 西城男孩
38seasons in the sun 西城男孩
39written in the stars西城男孩
40再看我一眼westlife西城男孩 (搜狗上有)
41I`m Not Twenty艾莉婕
42im fed up-艾莉婕alize
43Hey Amigo!-艾莉婕Alizee
44contre courant 艾莉婕Alizee
45La isla bonita艾莉婕Alizee
46Sorry sweetbox
47 Life Is Cool sweetbox
48 Don't push me 别碰我sweetbox
48Human Sacrifice Sweetbox
49And Then We Kiss 小甜甜布兰妮Britney Spears
50Girl In The Mirror 小甜甜布兰妮Britney Spears
51 Overprotected 小甜甜布兰妮Britney Spears
52gimme more小甜甜布兰妮Britney Spears
53 Let The Music Heal Your Soul 布兰妮 后街 西城等
54 Never Had A Dream Come True S- Club 7小龙乐队
55Here with me蒂朵 Dido
56thank you 蒂朵 Dido
57white flag 蒂朵Dido 漂泊的心
5830 minutes tatu
59Forever at your feet Oh susanna
50Northern Star 北极星melanie c
51 The best in me青苹果之恋 蓝色组合
52Cry Me A River 青苹果之恋 Justin Timberlake
53 Timeless Justin Guarini
54she Groove Coverage
557 Years&50 Days 七年又五十天 Groove Coverage
56moonlight shadow Groove Coverage
57 far away from home Groove Coverage舞动精灵乐团
58Our Song 窈窕美眉( M2M
59 Mirror Mirror (LP Version) 窈窕美眉(M2M)
60into the west :Annie Lennox
61 Girl In Your Dreams (LP Version) 窈窕美眉(M2M)
62When You’re Gone 艾薇儿Avril Lavigne
63 Because Of You 凯丽·克莱森 Kelly Clarkson
64 I Just Can’t Get You Out of My Head - Helena 群星
65Magolpy -飞行少女 群星
66 A New Day Has Come - Celine Dion
67You’re My Everything - Santa Esmeralda 英文群星
68Christmas In My Heart 莎拉蔻娜Sarah Connor
69冰川时代(慢摇) 群星
70it's not goodbye 萝拉普西妮
71one more time 萝拉普西妮(Laura
72our love will always last(最后之舞)
73only love Groove Coverage
74don't think of me dido
75 I Saw You Walking In The Rain
76nothing in the world 原子少女猫
77it s ok原子少女猫
78 Burning Maria Arredondo
79甚至星星也显出书信的样子 维塔斯 (俄罗斯)
80别人的忧愁在哭泣 维塔斯 (俄罗斯)
81星星 维塔斯 (俄罗斯)
82天啊,我多么地爱-vitas 维塔斯 (俄罗斯)
83歌剧2 维塔斯 (俄罗斯)
84永恒的吻 维塔斯 (俄罗斯)
85我的天鹅 维塔斯 (俄罗斯)
86奉献 维塔斯 (俄罗斯
87天使之声 Concerto Pour Deux Voix 双童声协奏曲
88incomplete不完整的爱 后街男孩(2007最新专辑 顶~~)
89Never Gone 后街男孩(2007最新专辑 顶~~)
90Just Want You To Know 后街男孩(2007最新专辑 顶~~)
91Crawling Back To You 后街男孩(2007最新专辑 顶~~)
92Weird World 后街男孩(2007最新专辑 顶~~)
93Poster Girl 后街男孩(2007最新专辑 顶~~)
94Climbing The Walls 后街男孩(2007最新专辑 顶~~)
95 I Still 后街男孩(2007最新专辑 顶~~)
96My Beautiful Woman 后街男孩(2007最新专辑 顶~~)
97Safest Place To Hide后街男孩(2007最新专辑 顶~~)
98Siberia 西伯利亚 后街男孩(2007最新专辑 顶~~)
99Song For The Unloved后街男孩(2007最新专辑 顶~~)
100Rush Over Me后街男孩(2007最新专辑 顶~~)
101Movin On 后街男孩(2007最新专辑 顶~~)
102HOME 西城男孩


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10567627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存