當前位置:首頁 » 編程語言 » sybasesql分頁

sybasesql分頁

發布時間: 2022-12-29 18:25:53

A. (問題解決再追加100分)sql server存儲過程實現查詢數據條數過大,分頁查詢怎麼實現

按說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_S.nextval into :new.queryId from al;
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 >=queryIds.length)
{
endRow = this.queryIds.length - 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寫入代碼的執行效率,這部分是很值得研究的。

B. MYSQL 與SQL的區別

mssql 的正式名字是 SQL Server MS公司出的。圖形操作界面好一些,性能還可以。在在mssql和oracle上不能互換.支持OLEDB連接.asp、mssaql只能for window mysql 就是mysql 下面是readme:免費軟體。性能也可以。速度快,用於小規模.命令行界面.(可以裝圖形操作軟體.)

sqlserver 我以前是做ASP的時候用的
現在學php..就和mysql搭配在用.感覺相當不錯.操作簡單.功能強大..

驅動程序不一樣 欄位類型不一樣

mysql有完整的許可權控制,全面的tcp協議支持,能跨web存取,只要結構設計地好,mysql也是一套非常有價值和資料庫系統,但是不支持外鍵,不支持事務,不支持存儲過程,不支持觸發器.全文搜索就更沒有了,除for window版要給錢,其它平台都是免費,可以把它理解為有用戶控管的access資料庫.而它受歡迎的最大特點是php+mysql是免費的,而且跨平台,相反如果用asp+mssql會要多少錢?

分頁區別就在SQL語句在獲取記錄總數的時候不同。
select count(*) from guestbook ; //mssql
select name from note; //mysql

mysql是一個開源的資料庫,比較小,不過功能實用,速度快.比access強很多.

sql server,mssql也是它.是微軟公司出的資料庫.非常大,功能強.

對於程序開發人員而言,目前使用最流行的兩種後台資料庫即為MySQL and SQL Server。這兩者最基本的相似之處在於數據存儲和屬於查詢系統。你可以使用SQL來訪問這兩種資料庫的數據,因為它們都支持ANSI-SQL。 還有,這兩種資料庫系統都支持二進制關鍵詞和關鍵索引,這就大大地加快了查詢速度。同時,二者也都提供支持XML的各種格式。除了在顯而易見的軟體價格上的區別之外,這兩個產品還有什麼明顯的區別嗎?在這二者之間你是如何選擇的?讓我們看看這兩個產品的主要的不同之處,包括發行費用,性能以及它們的安全性。

根本的區別是它們遵循的基本原則

二者所遵循的基本原則是它們的主要區別:開放vs保守。SQL伺服器的狹隘的,保守的存儲引擎與MySQL伺服器的可擴展,開放的存儲引擎絕然不同。雖然你可以使用SQL伺服器的Sybase引擎,但MySQL能夠提供更多種的選擇,如MyISAM, Heap, InnoDB, and Berkeley DB。MySQL不完全支持陌生的關鍵詞,所以它比SQL伺服器要少一些相關的資料庫。同時,MySQL也缺乏一些存儲程序的功能,比如MyISAM引擎聯支持交換功能。

發行費用:MySQL不全是免費,但很便宜

當提及發行的費用,這兩個產品採用兩種絕然不同的決策。對於SQL伺服器,獲取一個免費的開發費用最常的方式是購買微軟的Office或者Visual Studio的費用。但是,如果你想用於商業產品的開發,你必須還要購買SQL Server Standard Edition。學校或非贏利的企業可以不考慮這一附加的費用。

性能:先進的MySQL

純粹就性能而言,MySQL是相當出色的,因為它包含一個預設桌面格式MyISAM。MyISAM 資料庫與磁碟非常地兼容而不佔用過多的CPU和內存。MySQL可以運行於Windows系統而不會發生沖突,在UNIX或類似UNIX系統上運行則更好。你還可以通過使用64位處理器來獲取額外的一些性能。因為MySQL在內部里很多時候都使用64位的整數處理。Yahoo!商業網站就使用MySQL 作為後台資料庫。

當提及軟體的性能,SQL伺服器的穩定性要比它的競爭對手強很多。但是,這些特性也要付出代價的。比如,必須增加額外復雜操作,磁碟存儲,內存損耗等等。如果你的硬體和軟體不能充分支持SQL伺服器,我建議你最好選擇其他如DBMS資料庫,因為這樣你會得到更好的結果。

安全功能

MySQL有一個用於改變數據的二進制日誌。因為它是二進制,這一日誌能夠快速地從主機上復制數據到客戶機上。即使伺服器崩潰,這一二進制日誌也會保持完整,而且復制的部分也不會受到損壞。

在SQL伺服器中,你也可以記錄SQL的有關查詢,但這需要付出很高的代價。

安全性

這兩個產品都有自己完整的安全機制。只要你遵循這些安全機制,一般程序都不會出現什麼問題。這兩者都使用預設的IP埠,但是有時候很不幸,這些IP也會被一些黑客闖入。當然,你也可以自己設置這些IP埠。

恢復性:先進的SQL伺服器

恢復性也是MySQL的一個特點,這主要表現在MyISAM配置中。這種方式有它固有的缺欠,如果你不慎損壞資料庫,結果可能會導致所有的數據丟失。然而,對於SQL伺服器而言就表現得很穩鍵。SQL伺服器能夠時刻監測數據交換點並能夠把資料庫損壞的過程保存下來。

根據需要決定你的選擇

對於這兩種資料庫,如果非要讓我說出到底哪一種更加出色,也許我會讓你失望。以我的觀點,任一對你的工作有幫助的資料庫都是很好的資料庫,沒有哪一個資料庫是絕對的出色,也沒有哪一個資料庫是絕對的差勁。我想要告訴你的是你應該多從你自己的需要出發,即你要完成什麼樣的任務?而不要單純地從軟體的功能出發。

如果你想建立一個.NET伺服器體系,這一體系可以從多個不同平台訪問數據,參與資料庫的管理,那麼你可以選用SQL伺服器。如果你想建立一個第三方站點,這一站點可以從一些客戶端讀取數據,那麼MySQL將是最好的選擇。

這兩者資料庫都能夠在.NET或J2EE下運行正常,同樣,都能夠利用RAID。

那天沒有注意,使用 SELECT TOP X 的時候MySQL不認,雖然沒有TOP X也不是不可以,但是總覺得別扭,後來發現,原來是 在 MySQL中,需要使用 LIMIT X來限制。
X代表一個非零的正整數。這也許就是在Hibernate中看到的所謂的「SQL方言」吧。不同的資料庫,SQL語言會有些不同。

mysql:免費,跨平台,但功能交少只有DATABASE,TABLE,用戶管理這些,使用於小型資料庫,中型也勉強可以

mssql:要購買,只能建立在window上,包含以上功能還有view,PROCEDURE,TRIGGER,JOB.....太多了,適合中小形資料庫,大型就勉強一點

C. sybase資料庫是否支持查詢分頁

sybase不支持分頁查詢。要想分頁查詢需自己寫存儲過程

熱點內容
java二進制讀取 發布:2025-07-03 11:55:52 瀏覽:739
我的世界伺服器記分板排版 發布:2025-07-03 11:39:22 瀏覽:568
安卓前期用什麼處理器 發布:2025-07-03 11:37:54 瀏覽:868
如何更換安卓手機內存 發布:2025-07-03 11:18:52 瀏覽:57
魔獸清理緩存 發布:2025-07-03 10:46:38 瀏覽:521
神州防火牆web怎麼配置代碼 發布:2025-07-03 10:37:54 瀏覽:328
安卓看小說哪個軟體免費又最好 發布:2025-07-03 10:25:30 瀏覽:437
linuxprofile 發布:2025-07-03 10:25:29 瀏覽:719
存儲藍盤 發布:2025-07-03 09:55:10 瀏覽:887
java必學 發布:2025-07-03 09:21:57 瀏覽:449