时间:2021-07-01 10:21:17 帮助过:5人阅读
第二种方案:
代码如下:
- <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> (<span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">30</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> (<span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">45030</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> ARTICLE <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span>) f <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> f.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">ASC</span>, f.ID <span style="color: #0000ff;">DESC</span>) s <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> s.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>,s.ID <span style="color: #0000ff;">DESC</span>
平均查询100次所需时间:138S
第三种方案:
代码如下:
- <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span><span style="color: #000000;"> ARTICLE w1,
- (
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">30</span> ID <span style="color: #0000ff;">FROM</span><span style="color: #000000;">
- (
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">50030</span> ID, <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">FROM</span> ARTICLE <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span><span style="color: #000000;">
- ) w </span><span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">ASC</span>, w.ID <span style="color: #0000ff;">ASC</span><span style="color: #000000;">
- ) w2 </span><span style="color: #0000ff;">WHERE</span> w1.ID <span style="color: #808080;">=</span> w2.ID <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w1.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, w1.ID <span style="color: #0000ff;">DESC</span>
平均查询100次所需时间:21S
第四种方案:
代码如下:
- <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span><span style="color: #000000;"> ARTICLE w1
- </span><span style="color: #0000ff;">WHERE</span> ID <span style="color: #808080;">in</span><span style="color: #000000;">
- (
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">top</span> <span style="color: #800000; font-weight: bold;">30</span> ID <span style="color: #0000ff;">FROM</span><span style="color: #000000;">
- (
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">top</span> <span style="color: #800000; font-weight: bold;">45030</span> ID, <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">FROM</span> ARTICLE <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span><span style="color: #000000;">
- ) w </span><span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">ASC</span>, w.ID <span style="color: #0000ff;">ASC</span><span style="color: #000000;">
- )
- </span><span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w1.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, w1.ID <span style="color: #0000ff;">DESC</span>
平均查询100次所需时间:20S
第五种方案:
代码如下:
- <span style="color: #0000ff;">SELECT</span> w2.n, w1.<span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> ARTICLE w1, (<span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">50030</span> row_number() <span style="color: #0000ff;">OVER</span> (<span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span>) n, ID <span style="color: #0000ff;">FROM</span> ARTICLE ) w2 <span style="color: #0000ff;">WHERE</span> w1.ID <span style="color: #808080;">=</span> w2.ID <span style="color: #808080;">AND</span> w2.n <span style="color: #808080;">></span> <span style="color: #800000; font-weight: bold;">50000</span> <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w2.n <span style="color: #0000ff;">ASC</span>
平均查询100次所需时间:15S
查询第1000-1030条记录
第一种方案:
代码如下:
- <span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">30</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> ARTICLE <span style="color: #0000ff;">WHERE</span> ID <span style="color: #808080;">NOT</span> <span style="color: #808080;">IN</span>(<span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">1000</span> ID <span style="color: #0000ff;">FROM</span> ARTICLE <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span>) <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>,ID <span style="color: #0000ff;">DESC</span>
平均查询100次所需时间:80s
第二种方案:
代码如下:
- <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> ( <span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">30</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> (<span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">1030</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> ARTICLE <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span>) f <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> f.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">ASC</span>, f.ID <span style="color: #0000ff;">DESC</span>) s <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> s.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>,s.ID <span style="color: #0000ff;">DESC</span>
平均查询100次所需时间:30S
第三种方案:
代码如下
- <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span><span style="color: #000000;"> ARTICLE w1,
- (
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">30</span> ID <span style="color: #0000ff;">FROM</span><span style="color: #000000;">
- (
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">1030</span> ID, <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">FROM</span> ARTICLE <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span><span style="color: #000000;">
- ) w </span><span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">ASC</span>, w.ID <span style="color: #0000ff;">ASC</span><span style="color: #000000;">
- ) w2 </span><span style="color: #0000ff;">WHERE</span> w1.ID <span style="color: #808080;">=</span> w2.ID <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w1.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, w1.ID <span style="color: #0000ff;">DESC</span>
平均查询100次所需时间:12S
第四种方案:
代码如下:
- <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span><span style="color: #000000;"> ARTICLE w1
- </span><span style="color: #0000ff;">WHERE</span> ID <span style="color: #808080;">in</span><span style="color: #000000;">
- (
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">top</span> <span style="color: #800000; font-weight: bold;">30</span> ID <span style="color: #0000ff;">FROM</span><span style="color: #000000;">
- (
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">top</span> <span style="color: #800000; font-weight: bold;">1030</span> ID, <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">FROM</span> ARTICLE <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span><span style="color: #000000;">
- ) w </span><span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">ASC</span>, w.ID <span style="color: #0000ff;">ASC</span><span style="color: #000000;">
- )
- </span><span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w1.<span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, w1.ID <span style="color: #0000ff;">DESC</span>
平均查询100次所需时间:13S
第五种方案:
代码如下:
- <span style="color: #0000ff;">SELECT</span> w2.n, w1.<span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> ARTICLE w1,(<span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">1030</span> row_number() <span style="color: #0000ff;">OVER</span> (<span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span>) n, ID <span style="color: #0000ff;">FROM</span> ARTICLE) w2 <span style="color: #0000ff;">WHERE</span> w1.ID <span style="color: #808080;">=</span> w2.ID <span style="color: #808080;">AND</span> w2.n <span style="color: #808080;">></span> <span style="color: #800000; font-weight: bold;">1000</span> <span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> w2.n <span style="color: #0000ff;">ASC</span>
平均查询100次所需时间:14S
由此可见在查询页数靠前时,效率3>4>5>2>1,页码靠后时5>4>3>1>2,再根据用户习惯,一般用户的检索只看最前面几页,因此选择3 4 5方案均可,若综合考虑方案5是最好的选择,但是要注意SQL2000不支持row_number()函数,由于时间和条件的限制没有做更深入、范围更广的测试,有兴趣的
第六种方案:
代码如下:
- <span style="color: #0000ff;">SELECT</span><span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> (<span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">TOP</span> <span style="color: #800000; font-weight: bold;">1030</span> row_number() <span style="color: #0000ff;">OVER</span> (<span style="color: #0000ff;">ORDER</span> <span style="color: #0000ff;">BY</span> <span style="color: #ff00ff;">YEAR</span> <span style="color: #0000ff;">DESC</span>, ID <span style="color: #0000ff;">DESC</span>) n, <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> ARTICLE) w2 <span style="color: #0000ff;">WHERE</span> w2.n <span style="color: #808080;">></span> <span style="color: #800000; font-weight: bold;">1000</span>
效率和第五种方案差不多
高效的SQLSERVER分页查询
标签:简单 检索 记录 where sele 数据库 art row 好的