詢時(shí)間區(qū)間條件的分表的總數(shù)據(jù)量是否小于等于查詢閾值,如果是,則截取符合所述查詢時(shí)間區(qū)間條件的分表,并將所述符合所述查詢時(shí)間區(qū)間條件的分表作為查詢數(shù)據(jù)源;如果否,則在滿足所述查詢時(shí)間區(qū)間范圍內(nèi)的分表中,按照時(shí)間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表。
[0065]本實(shí)施例中,之所以采用時(shí)間倒序的方式來截取滿足所述查詢閾值范圍的分表,是因?yàn)檩^新的數(shù)據(jù)的參考意義更大。
[0066]優(yōu)選地,所述索引表中至少包含每個(gè)分表中的下述信息:
[0067]表名、創(chuàng)建時(shí)間、最小插入時(shí)間、最大插入時(shí)間、數(shù)據(jù)量。
[0068]舉例來說,索引表與分表的關(guān)系示意圖如圖2所示,具體的,所述索引表中包含有各個(gè)分表的表名,如Table_l、Table_2、Table_3、Table_n,每一個(gè)分表都對應(yīng)有最小插入時(shí)間以及最大插入時(shí)間。
[0069]也就是說,所述索引表中記錄有每一個(gè)分表的重要信息,如此,在進(jìn)行分頁查詢時(shí),能夠快速地根據(jù)所述索引表來掌握各分表的信息,先從所述索引表上確定預(yù)查詢的分表,進(jìn)而再去查找對應(yīng)的分表,能夠加快查找速度。
[0070]舉例來說,若步驟101中所獲取的查詢閾值為10萬,而每一個(gè)分表中的數(shù)據(jù)量均為4萬,那么,截取查詢閾值范圍內(nèi)的分表時(shí),只需要截取2個(gè)半的分表即可。當(dāng)然,這里,并不一定是恰好跨域2個(gè)半的分表(如由1/2的表1、整個(gè)表2、整個(gè)表3組成);還可能跨越4個(gè)分表,如由1/4的表1、整個(gè)表2、整個(gè)表3、以及1/4的表4組成??傊鄬τ谡麄€(gè)數(shù)據(jù)庫中的億萬級(jí)數(shù)據(jù)來說,大大縮小了源數(shù)據(jù)的范圍。
[0071]仍以查詢閾值為10萬,而每一個(gè)分表中的數(shù)據(jù)量均為4萬為例,圖3為本發(fā)明實(shí)施例提供的無查詢時(shí)間區(qū)間條件時(shí)所截取的分表的示意圖,如圖3所示,索引表中有N個(gè)分表,當(dāng)無查詢時(shí)間區(qū)間條件時(shí),按照時(shí)間倒序方式截取分表,根據(jù)查詢閾值實(shí)際截取的分表為:分表N、分表(N-1)、分表(N-2)的一部分;可見,相對于具有N個(gè)分表的真實(shí)范圍來說,僅僅在根據(jù)查詢閾值實(shí)際截取的分表中查詢,將大大加快查詢速度,從而能快速返回查詢結(jié)果。
[0072]仍以查詢閾值為10萬,而每一個(gè)分表中的數(shù)據(jù)量均為4萬為例,圖4為本發(fā)明實(shí)施例提供的有查詢時(shí)間區(qū)間條件時(shí)所截取的分表的示意圖,如圖4所示,索引表中有N個(gè)分表,當(dāng)有查詢時(shí)間區(qū)間條件時(shí),假定根據(jù)所述查詢時(shí)間區(qū)間條件確定的真實(shí)查詢范圍為分表(N-3)、分表(N-2)、分表(N-1),在所述真實(shí)范圍中,按照時(shí)間倒序方式截取分表,根據(jù)查詢閾值實(shí)際截取的分表為:分表(N-1)、分表(N-2)、分表(N-3)的一部分;可見,相對于具有3個(gè)完整的分表的真實(shí)范圍來說,僅僅在根據(jù)查詢閾值實(shí)際截取的分表中查詢,縮小了數(shù)據(jù)源的范圍,從而加快了查詢速度,能快速返回查詢結(jié)果。
[0073]步驟103:以所截取的分表作為查詢數(shù)據(jù)源,進(jìn)行分頁查詢。
[0074]具體地,確定好查詢數(shù)據(jù)源后,可以根據(jù)查詢條件在該查詢數(shù)據(jù)源的基礎(chǔ)上進(jìn)行分頁查詢。
[0075]這里,具體如何根據(jù)查詢條件進(jìn)行分頁查詢可參考現(xiàn)有技術(shù)中的分頁查詢過程,在此不再贅述。
[0076]上述方案中,優(yōu)選地,當(dāng)有查詢時(shí)間區(qū)間條件、且符合所述查詢時(shí)間區(qū)間條件的分表的總數(shù)據(jù)量大于查詢閾值時(shí),所述方法還包括:
[0077]在返回查詢結(jié)果時(shí),輸出第一提示信息;其中,所述第一提示信息用于提醒用戶所述查詢結(jié)果的第一查詢時(shí)間區(qū)間。
[0078]這里,所述第一查詢時(shí)間區(qū)間是指真實(shí)的查詢時(shí)間區(qū)間。即,當(dāng)前查詢結(jié)果是以所述第一查詢時(shí)間區(qū)間為時(shí)間條件來進(jìn)行查詢的。
[0079]上述方案中,優(yōu)選地,所述方法還包括:
[0080]在返回查詢結(jié)果之前,采用異步查詢技術(shù)判斷所述查詢時(shí)間區(qū)間所跨分表的個(gè)數(shù);
[0081]根據(jù)所跨分表的個(gè)數(shù)生成并輸出相應(yīng)的提示信息。
[0082]優(yōu)選地,所述異步查詢技術(shù)可以是Ajax技術(shù)。
[0083]當(dāng)然,還可以采用其他異步查詢技術(shù)來判斷所述查詢時(shí)間區(qū)間所跨分表的個(gè)數(shù),在此不再列舉。
[0084]優(yōu)選地,根據(jù)所跨分表的個(gè)數(shù)生成并輸出相應(yīng)的提示信息,包括:
[0085]當(dāng)所跨分表的個(gè)數(shù)為O時(shí),生成并輸出第二提示信息;
[0086]當(dāng)所跨分表的個(gè)數(shù)為小于等于N時(shí),生成并輸出第三提示信息;其中,N為大于等于I的正整數(shù);
[0087]當(dāng)所述跨分表的個(gè)數(shù)大于N時(shí),生成并輸出第四提示消息。
[0088]具體地,所述第二提示信息可以是“無結(jié)果”;
[0089]所述第三提示信息可以是“即刻返回結(jié)果”;
[0090]所述第四提示信息可以是“當(dāng)前數(shù)據(jù)量過大,正在努力返回?cái)?shù)據(jù);若所查詢數(shù)據(jù)不在返回?cái)?shù)據(jù)范圍內(nèi),請縮小時(shí)間范圍”。
[0091]這里,輸出所述第二提示信息、所述第三提示信息、所述第四提示信息的目的是為了讓用戶能夠更清楚地了解當(dāng)前查詢的進(jìn)度,提高用戶的體驗(yàn)。如,通過輸出所述第二提示信息、或所述第三提示信息、或所述第四提示信息來安撫用戶焦慮的等待情緒。
[0092]本實(shí)施例中,所述分頁查詢方法尤其適用于以分表形式存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫。
[0093]在本發(fā)明實(shí)施例中,獲取查詢閾值;根據(jù)所述查詢閾值對索引表進(jìn)行查詢范圍定位,按照時(shí)間倒序方式從所述索引表中截取滿足所述查詢閾值范圍內(nèi)的分表。如此,由于縮小了數(shù)據(jù)源的范圍,能快速返回查詢結(jié)果,減少了等待時(shí)間,提升了用戶的使用體驗(yàn)。即便在面對億萬級(jí)數(shù)據(jù)多條件分頁查詢時(shí),也能在極短的時(shí)間內(nèi)向用戶返回查詢結(jié)果,加快了查詢速度,并能在返回查詢結(jié)果的同時(shí)返回真實(shí)的查詢時(shí)間范圍,以更好地提醒用戶當(dāng)前查詢結(jié)果是基于哪個(gè)時(shí)間段的數(shù)據(jù)范圍,大大提升了用戶的體驗(yàn)。
[0094]圖5為本發(fā)明實(shí)施例提供的分頁查詢方法的實(shí)現(xiàn)流程示意圖二,如圖5所示,所述分頁查詢方法主要包括以下步驟:
[0095]步驟501:查詢開始。
[0096]具體地,接收到查詢條件時(shí),查詢開始。
[0097]本實(shí)施例中,所述查詢條件中包括查詢時(shí)間區(qū)間條件。
[0098]步驟502:采用Ajax技術(shù)判斷所述查詢時(shí)間區(qū)間所跨分表的個(gè)數(shù),當(dāng)所跨分表的個(gè)數(shù)為O時(shí),執(zhí)行步驟503 ;當(dāng)所跨分表的個(gè)數(shù)為小于等于N時(shí),執(zhí)行步驟504 ;當(dāng)所述跨分表的個(gè)數(shù)大于N時(shí),執(zhí)行步驟505。
[0099]其中,N為大于等于I的正整數(shù)。
[0100]步驟503:輸出第二提示信息,然后停止查詢。
[0101]具體地,所述第二提示信息可以是“無結(jié)果”。
[0102]步驟504:輸出第三提示信息,然后執(zhí)行步驟506。
[0103]具體地,所述第三提示信息可以是“S卩刻返回結(jié)果”。
[0104]步驟505:輸出第四提示消息,然后執(zhí)行步驟506。
[0105]具體地,所述第四提示信息可以是“當(dāng)前數(shù)據(jù)量過大,正在努力返回?cái)?shù)據(jù);若所查詢數(shù)據(jù)不在返回?cái)?shù)據(jù)范圍內(nèi),請縮小時(shí)間范圍”。
[0106]步驟506:根據(jù)動(dòng)態(tài)設(shè)定的查詢閾值,按照時(shí)間倒序的方式截取滿足所述查詢閾值范圍的分表;然后執(zhí)行步驟507。
[0107]優(yōu)選地,所述按照時(shí)間倒序方式截取滿足所述查詢閾值范圍的分表,可以包括:
[0108]當(dāng)有查詢時(shí)間區(qū)間條件時(shí),結(jié)合索引表中所記錄的最小插入時(shí)間、最大插入時(shí)間,根據(jù)所述查詢時(shí)間區(qū)間條件進(jìn)行分表定位;
[0109]判斷符合所述查詢時(shí)間區(qū)間條件的分表的總數(shù)據(jù)量是否小于等于查詢閾值,如果是,則截取符合所述查詢時(shí)間區(qū)間條件的分表,并將所述符合所述查詢時(shí)間區(qū)間條件的分表作為查詢數(shù)據(jù)源;如果否,則在滿足所述查詢時(shí)間區(qū)間范圍內(nèi)的分表中,按照時(shí)間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表。
[0110]步驟507:以所截取的分表作為查詢數(shù)據(jù)源,進(jìn)行分頁查詢,然后執(zhí)行步驟508。
[0111]具體地,以所截取的分表作為查詢數(shù)據(jù)源,根據(jù)查詢條件進(jìn)行分頁查詢。
[0112]步驟508:返回查詢結(jié)果。
[0113]本實(shí)施例中,所述步驟501?步驟508的執(zhí)行主體可以是分頁查詢裝置,也可以是具有所述分頁查詢裝置的FOTA系統(tǒng)。
[0114]圖6為本發(fā)明實(shí)施例提供的分頁查詢裝置的組成結(jié)構(gòu)示意圖一,如圖6所示,該裝置包括獲取單元61、截取單元62和查詢單元63 ;其中,
[0115]所述獲取單元61,用于獲取查詢閾值;
[0116]所述截取單元62,用于按照時(shí)間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表;
[0117]所述查詢單元63,用于以所截取的分表作為查詢數(shù)據(jù)源,進(jìn)行分頁查詢。
[0118]優(yōu)選地,所述獲取單元61,還用于:
[0119]根據(jù)系統(tǒng)負(fù)載情況設(shè)定查詢閾值。
[0120]這里,上述分頁查詢裝置可設(shè)置于FOTA系統(tǒng)中;其中,F(xiàn)OTA系統(tǒng)的數(shù)據(jù)庫中的數(shù)據(jù)以分表的形式進(jìn)行存儲(chǔ)