Db2
DB2 簡單的按查詢排序
我對 DB2 很陌生。已經安裝了 Express C 版本,並且在執行簡單查詢時遇到了一些問題。
SELECT A,B,C,D,E,F,G, H FROM TABLE_NAME where A=9999 ORDER BY D
注意:
A
通過H
是表中唯一的列。當我這樣做時,我得到了這個異常:DB2 SQL 錯誤:SQLCODE: -1585, SQLSTATE: 54048, SQLERRMC: null 消息:無法創建臨時表,因為沒有具有兼容頁大小的可用系統臨時表空間。
更多例外…
DB2 SQL 錯誤:SQLCODE:-727,SQLSTATE:56098,SQLERRMC:2;-1585;54048;
這只是一個帶有
where
andorder by
子句的簡單查詢。為什麼我會收到此錯誤?
,
ORDER BY
特別是在 D 列上沒有索引的情況下,將需要排序操作。如果在排序堆中沒有為語句分配足夠的記憶體,則會導致排序到臨時表中的數據溢出。表格寬度將是被排序的結果集的列寬之和,加上一些成本。必須有一個系統臨時表空間,其頁大小適合容納臨時表寬度,並且錯誤說沒有這樣的表空間。
要創建它,您可以執行以下語句,例如(假設您在數據庫中使用自動儲存):
create system temporary tablespace TMPSYS32 pagesize 32 k
也可能發生您沒有具有該頁面大小的緩衝池(每個表空間必須有一個具有匹配頁面大小的緩衝池)。如果是這樣,您需要先創建緩衝池:
create bufferpool BP32 pagesize 32 k create system temporary tablespace TMPSYS32 pagesize 32 k bufferpool BP32