真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Oracle分頁(yè)+付上SqlServer分頁(yè)+千萬(wàn)級(jí)數(shù)據(jù)分頁(yè)的存儲(chǔ)過(guò)程是怎樣的

這篇文章給大家介紹Oracle分頁(yè)+付上Sql Server分頁(yè)+千萬(wàn)級(jí)數(shù)據(jù)分頁(yè)的存儲(chǔ)過(guò)程是怎樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到金林網(wǎng)站設(shè)計(jì)與金林網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋金林地區(qū)。

select * from a_matrix_navigation_map
where rowid not in(select rowid from a_matrix_navigation_map where rownum<=0) and rownum<=10

第二種:

SELECT * FROM
(
SELECT A.*, rownum r
FROM
(
SELECT *
FROM a_matrix_navigation_map

) A
WHERE rownum <= 10
) B
WHERE r > 0

第三種

SELECT * FROM table WHERE ROWNUM<101;
minus
SELECT * FROM table WHERE ROWNUM<91;
第四種

可以用變通一點(diǎn)的辦法,我給個(gè)示例:

sql = "select a_id,a_title,a_author,aID,a_time,a_readtime,sID from article order by a_id";

int a;
while (rs.next()) {
a++;
if (a=ipage+spage)continue;
...
} 其中第二種是非常成熟的分頁(yè) 我的實(shí)例~ 即可實(shí)現(xiàn) 類似limit 功能$bandanspager="select * from abc t2,abc1 t1 where t1.id=t2.id group by t1.id";    $sql=" SELECT * FROM          (             SELECT A.*, rownum r             FROM             ( ".$bandanspager.") A            WHERE rownum <= 10          ) B

         WHERE r > 0

 

 

Oracle不支持類似于 MySQL 中的 limit. 但你還是可以rownum來(lái)限制返回的結(jié)果集的行數(shù).

如果你只希望返回前十行紀(jì)錄,你可以這樣寫:

SELECT * FROM table WHERE ROWNUM<10;

但是下面的語(yǔ)句是不對(duì)的:

SELECT * FROM table WHERE ROWNUM>90 AND ROWNUM<100;

這是因?yàn)?Oracle 認(rèn)為這個(gè)條件不成立,所以沒(méi)有返回。
你應(yīng)該這樣寫:

SELECT * FROM table WHERE ROWNUM<101;
minus
SELECT * FROM table WHERE ROWNUM<91;

 

其他數(shù)據(jù)庫(kù)模擬實(shí)現(xiàn)mysql的limit語(yǔ)法

假如我有個(gè)user表,我想查詢符合某些條件的第50個(gè)用戶開(kāi)始的10個(gè)用戶,且不能使用id號(hào)between and那樣查詢,應(yīng)該怎么寫SQL語(yǔ)句?

  在mysql數(shù)據(jù)庫(kù)中有l(wèi)imit,offset語(yǔ)句可以方便的實(shí)現(xiàn),那么在SQL server中呢?SQL Server是否支持limit和offset語(yǔ)句呢?

select top 10 * from
(select top 60 * from [user] order by userid) aa
order by userid desc

  oracle,如果想從表中取出按照某字段排序前M到N條記錄

  下面的ORACLE語(yǔ)句是最好的:

SQL> select ID from
     (
       select ID , rownum as con from
       (
        select ID from TestSort order by ID
       )
       where rownum <= 3   /*N值*/
     )
     where con >= 2; /*M 值*/
ID
----------
         2
         3

 


 

SqlServer分頁(yè):

一條SQL語(yǔ)句搞定Sql Server 2000 分頁(yè)

Sql Server 2000 的分頁(yè)方案大多采用存儲(chǔ)過(guò)程來(lái)完成,存儲(chǔ)過(guò)程書(shū)寫比較復(fù)雜,在參考了ITPUB網(wǎng)站上眾多網(wǎng)友的意見(jiàn)后用一條SQL語(yǔ)句就可以實(shí)現(xiàn)分頁(yè)功能。SELECT TOP 頁(yè)大小 *FROMUsersWHERE(ID NOT IN (SELECT TOP (頁(yè)大小*(頁(yè)數(shù)-1)) ID FROM Users ORDER BY ID DESC))ORDER BYID DESC注:頁(yè)大小指的是每頁(yè)顯示的條數(shù)。黃底部分是需要用程序運(yùn)算后的一個(gè)數(shù)字。

千萬(wàn)級(jí)數(shù)據(jù)分頁(yè)的存儲(chǔ)過(guò)程:
引用自:Oracle分頁(yè)(limit方式的運(yùn)用)+付上SqlServer分頁(yè)+千萬(wàn)級(jí)數(shù)據(jù)分頁(yè)的存儲(chǔ)過(guò)程

/*
   經(jīng)測(cè)試,在 14483461 條記錄中查詢第 100000 頁(yè),每頁(yè) 10 條記錄按升序和降序第一次時(shí)間均為 0.47 秒,第二次時(shí)間均為 0.43 秒,測(cè)試語(yǔ)法如下:
  exec GetRecordFromPage news,newsid,10,100000
   news 為 表名, newsid 為關(guān)鍵字段, 使用時(shí)請(qǐng)先對(duì) newsid 建立索引。
*/

/*
函數(shù)名稱: GetRecordFromPage
函數(shù)功能: 獲取指定頁(yè)的數(shù)據(jù)
參數(shù)說(shuō)明: @tblName      包含數(shù)據(jù)的表名
           @fldName       關(guān)鍵字段名
           @PageSize     每頁(yè)記錄數(shù)
           @PageIndex    要獲取的頁(yè)碼
           @OrderType    排序類型, 0 - 升序, 1 - 降序
           @strWhere     查詢條件 (注意: 不要加 where)


*/
CREATE PROCEDURE GetRecordFromPage
    @tblName      varchar(255),       -- 表名
    @fldName     varchar(255),       -- 字段名
    @PageSize     int = 10,           -- 頁(yè)尺寸
    @PageIndex    int = 1,            -- 頁(yè)碼
    @OrderType    bit = 0,            -- 設(shè)置排序類型, 非 0 值則降序
    @strWhere     varchar(2000) = '' -- 查詢條件 (注意: 不要加 where)
AS

declare @strSQL   varchar(6000)       -- 主語(yǔ)句
declare @strTmp   varchar(1000)       -- 臨時(shí)變量
declare @strOrder varchar(500)        -- 排序類型

if @OrderType != 0
begin
    set @strTmp = '<(select min'
    set @strOrder = ' order by [' + @fldName + '] desc'
end
else
begin
    set @strTmp = '>(select max'
    set @strOrder = ' order by [' + @fldName +'] asc'
end

set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
    + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
    + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
     + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
    + @strOrder

if @strWhere != ''
    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
        + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
        + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
        + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

if @PageIndex = 1
begin
    set @strTmp = ''
    if @strWhere != ''
        set @strTmp = ' where (' + @strWhere + ')'

    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + ']' + @strTmp + ' ' + @strOrder
end

exec (@strSQL)

GO

關(guān)于Oracle分頁(yè)+付上Sql Server分頁(yè)+千萬(wàn)級(jí)數(shù)據(jù)分頁(yè)的存儲(chǔ)過(guò)程是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


文章題目:Oracle分頁(yè)+付上SqlServer分頁(yè)+千萬(wàn)級(jí)數(shù)據(jù)分頁(yè)的存儲(chǔ)過(guò)程是怎樣的
本文網(wǎng)址:http://weahome.cn/article/jhgsod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部