新四季網

用於搜索資料庫的方法和系統的製作方法

2023-06-11 07:08:06

專利名稱:用於搜索資料庫的方法和系統的製作方法
技術領域:
本發明涉及資料庫管理系統和方法。
背景技術:
結構化查詢語言(SQL)以及其衍生語言是用於資料庫管理系 統(DBMS)的最流行的查詢語言之一。雖然歷史上曾在微型電腦和 大型機上運行,但是,SQL(可選地,發音類似於"sequel")越來越 得到PC資料庫系統的支持,因為它支持在多個計算機系統上分布的 分布式資料庫。SQL的版本由ANSI和ISO兩者進行定義,儘管 有許多對這些標準機構所定義的語言的版本的擴展和變體。
SQL的用戶運行許多幾乎相同的查詢是常見的,在每個查詢之 間只有細微的差別。例如,搜索涉及某一個地理區域的零售商的信息 的用戶可能執行指定諸如州、城市和商店之類的相同地理參數的 一 系 列查詢。利用每個查詢,用戶可以輸出不同的信息,如平均銷售額、 平均支出、總銷售額、總支出等等。常規的資料庫管理應用程式通常 利用每個查詢從頭開始收集這些結果。然後該應用程式將高速緩存輸 出,以便在再次運行完全相同的查詢的情況下使用。然而,完全相同 的查詢很少重複。反覆地收集幾乎相同的數據的過程將會導致系統資 源的分配不是最佳。
因此,需要一種改進的更加優選地利用資料庫管理系統的資源的 方法來查詢資料庫。優選情況下,該方法將最小化運行時開銷和系統 資源,並更快地產生搜索結果。

發明內容
本發明包括資料庫管理系統、電腦程式產品,以及用於搜索資料庫的方法。在第一個實施例中,提供了搜索資料庫的方法。選擇了 多個查詢。創建滿足所選擇的多個查詢的數據集。還創建由數據集滿 足的目標查詢。對數據集執行目標查詢。
在第二個實施例中,電腦程式產品包括具有用於搜索資料庫的
計算機可使用的程序代碼的計算機可使用的介質。電腦程式產品包 括用於選擇多個查詢的計算機可使用的程序代碼,用於創建滿足所選 擇的多個查詢的數據集的計算機可使用的程序代碼,用於選擇由數據 集滿足的目標查詢的計算機可使用的程序代碼,以及用於對數據集執 行目標查詢的計算機可使用的程序代碼。
在第三個實施例中,提供了資料庫管理系統。資料庫管理系統包 括資料庫和查詢源。包括了檢查器,用於從查詢源選擇多個類似的查 詢,並根據它們創建別名查詢。包括了目標查詢標識符,用於選擇由 別名滿足的目標查詢。包括了查詢執行模塊,用於對資料庫執行別名 查詢,並對別名查詢的結果集執行目標查詢。


圖1是存儲在一個或多個計算機上並可被資料庫應用程式訪問 的樣本數據表的選錄。
圖2是用於以"SQL語句"的形式輸入查詢的示範性圖形用戶 界面(GUI)。
圖3是一組以SQL語句Ql到Q5的形式存在的查詢,以 及滿足Ql到Q5的別名Al。
圖4是常規查詢訪問計劃高速緩存的示意圖。
圖5是利用別名的查詢訪問計劃高速緩存的示意圖。
圖6是根據本發明的一個實施例的搜索資料庫的方法的流程圖。
圖7是^^據本發明的實施例的可以配置為運行DBMS應用程 序的計算機系統的示意圖。
圖8是根據本發明的實施例的可以配置為運行DBMS應用程
序的計算機系統的示意圖。
具體實施例方式
本發明包括的方法可以由實現了 SQL、SQL的許多變量之一或 諸如DDL或XML之類的另一種資料庫語法的資料庫管理應用程 序在計算機上執行。根據本發明的應用程式可以是獨立的DBMS應 用程序或用於與現有的DBMS應用程式連接的應用程式。在一個實 施例中,應用程式包括"檢查器"組件,該組件檢查查詢優化器的訪問 計劃高速緩存,觀察SQL語句或正在運行的其他類型的查詢,並尋 找相似性。應用程式創建滿足類似的查詢的數據集,即,原始資料庫 表之外的包含足夠的數據以執行所有類似的查詢的數據集。數據集通 常但不必然地等於單個查詢的輸出的超集。應用程式可以通過執行每 一個類似的查詢並組合它們的單個輸出來構建數據集。或者,應用程 序可以基於類似的查詢的語法推理地創建別名SQL語句("別名")。 然後,應用程式可以執行別名以計算超集。隨後,當運行請求了別名 的子集的查詢或否則被數據集滿足的查詢時,應用程式可以訪問被高 速緩存的數據集(即,別名的輸出),而不是原始表。從而,更加高 效地執行搜索。數據集通常比原始表小得多,如此,它可以更加快速 地被搜索到。此外,被高速緩存的輸出可以包含已經被操縱了的列, 以便在執行隨後的查詢的過程中不必重複操作。運行時開銷被最小 化,並可以更加優選地利用系統資源。
圖1是存儲在一個或多個計算機上並可被資料庫應用程式訪 問的樣本數據表10的選錄。表10名為SALESFILE,具有多個包 含連鎖零售商店的假設數據的列。所顯示的列標有Store、 State、 City、 Sales、 Expenses和Manager。單個欄位12位於每行和列的交叉處。 為了說明,表10比較小,儘管實際資料庫表的大小是無限制的。表 10可以包括很多圖中未顯示的行和列。此外,還可以在同一個或另 一個計算機系統上與其他表一起搜索表10。
圖2是用於以"SQL語句,,的形式輸入查詢的示範性圖形用戶
界面(GUI)。
GUI包括用於輸入某些標準SQL關鍵字的欄位。關
本:域技術人員將知道任何i似的;二:並理解本發明與它:一起;
用的適用性。SELECT是通常用於從資料庫中選擇列數據的數據檢 索命令。使用另外的關鍵字來進一步指定要選擇的數據和要執行的任 何操作。SELECT命令的結果叫做"結果集",該結果集可以以表的 形式(即,以具有行和列的表)存儲、代表和/或顯示。結果集中的行 和列的數量通常不同於原始表中的行和列的數量。
FROM是通常用於表示將從其中選擇數據的表的關鍵字。為有 條件地從表中選擇數據,可以向SELECT語句中添加WHERE子o"和"BETWEEN",可以與WHERE子 句一起使用。諸如SUM和AVG之類的聚合函數對列的多個值進 行運算,每次它們被調用時,只返回一個值。在沒有更多特徵的情況 下,在列上執行的聚合函數的輸出將是列,其中,該列中的每個欄位 都是聚合值。因此,聚合函數通常伴隨有GROUP BY命令。GROUP BY命令將行與相關的值組合起來。例如,其中,表的列A包含城 市名稱,歹'J B包含數值,對列A執行GROUP BY,對列B執行 AVG函數,通常將輸出City列,每一個城市都有一個條目,以及 具有與每個城市關聯的平均數值的AVG(B)列。HAVING命令與 WHERE類似地運算,但是對以前被在GROUP BY命令中進行分 組的行進行運算。ORDER BY被用來標識哪些列被用來對結果數據 進行排序。還可以使用其他命令、關鍵字和運算。
圖3是一組以SQL語句Ql到Q5的形式存在的查詢,以 及滿足Ql到Q5的別名Al。查詢可以在圖1的表10上"執 行"。當執行每個查詢時,它從表10中選擇列,並執行在查詢中指 定的任何操作,以計算表格結果集以黑體字高亮顯示SQL語句 Ql到Q5之間的差。Ql到Q5都調用列State、 City和Store。 Ql還調用SALES歹'J,並執行聚合函數AVG(Sales)。 Q4還調用 SALES列,並執行不同的聚合函數SUM(Sales)。 Q4和Q5各自
執行另外的排序,Q4根據State、 City、 Store對輸出進行排序,而 Q5根據SUM(Sales)對輸出進行排序。SORT函數通常不改變輸出 的內容,而是只改變顯示的順序。查詢Ql到Q5都共同地具有相 同的GROUP BY和WHERE子句,因此,具有相同的行數。
Al是SQL語句,當執行時,輸出足以滿足所有查詢Ql到 Q5的數據集。在此示例中,Al的結果集將相當於通過將Ql到Q5 的結果集聯接而形成的"超集"。超集可以通過執行每個查詢Ql到 Q5並聯接它們的結果集而形成。或者,在此示例中以及在許多其他 實例中,可以直接從查詢Ql到Q5的語法確定別名Al,無需實際 計算Ql到Q5的結果集。A1的結果集(超集)包括列State、City、 Store、 AVG(Sales)、 SUM(Sales)和SUM(Expenses),它們可以可選 地從Ql到Q5的語法直接確定。超集列State、 City、 Store基本 上是是從表10中選擇的相同名稱的列,如WHERE和GROUP BY子句對它們所運算的。超集列 AVG(Sales)、 SUM(Sales)和 SUM(Expenses)是對表10的列Sales和Expense執行的聚合函 數的結果,也由WHERE和GROUP BY子句對它們進行了運算。
雖然Q4和Q5兩者都指定另外的排序,排序操作一般只改 變順序,而不改變數據列的內容。如此,可以說,Al的超集至少"基 本上等效於,,Q1到Q5的組合結果集,即使超集中的數據的順序不 同於Al的結果集中的數據的順序。按照這裡所採用的慣例,Al和 超集被說成"滿足,,查詢Ql到Q5,因為這些查詢可以在超集上執 行,而不是在原始數據表上執行。同樣,查詢Ql到Q5被說成"屬 於"別名Al。能夠在超集上執行的其他SQL語句還被說成由超集 滿足並屬於別名Al。
超集通常將小於原始表,因此,可以比原始表更加有效地對它進 行搜索。此外,因為已經對原始表的列進行了運算以創建超集,對於 由超集滿足的並屬於別名的SQL語句的隨後的執行,不必重複那些 運算中的至少某些運算。這種有效率的方法最小化了系統資源和運行 時開銷,特別是用戶輸入許多幾乎相同的查詢的情況下。
在另一個實施例中,甚至在一組查詢具有不同的WHERE子句 的情況下,也可以產生根據本發明的超集。SELECT命令通常從表 中選擇列,而WHERE子句通常指定表中的滿足WHERE子句的 行。行通常代表在所選擇的列下列出的值。例如,執行查詢"SELECT Fl, F2, F3 from Tl where Fl-l"的應用程式將選擇列Fl, F2, F3下 列出的值,但是只從其中Fl = l的行中選擇那些值。另一個查詢語 句可以指定不同的WHERE子句,並可能也指定不同的列。應用程 序可以在單次通過大表時執行這些查詢。特別是在源表比較大的情況 下,多個查詢可以用一次通過表來滿足。這是有益的,因為節省了花 在非常大型的資料庫中的時間。查詢大型資料庫表的開銷降低,使得 此方法更加有吸引力。因此,這樣的實施例代表了許多查詢可以用一 個超集來滿足的另一種方式。此實施例不是產生結果欄位的超集,而 是可以產生結果行的超集。因此,在這種情況下,超集可以包括可以 用來滿足多個查詢的單獨的結果集的集合。
SELECT命令指定所需的結果集的描述,但是,產生該結果集 要執行的物理操作 一般是利用訪問計劃確定的。訪問計劃是描述滿足 每個查詢所需的操作的控制結構。將查詢轉換為有效率的查詢計劃由 許多或大多數DBMS應用程式(包括常規DBMS應用程式)中可 用的"查詢優化器"來執行。查詢優化器是DBMS的試圖確定執行查 詢的最有效的方式的組件。優化器為給定輸入查詢考慮可能的查詢計 劃,並試圖確定那些計劃中的哪些是最有效率的。基於開銷的查詢優 化器給每個可能的查詢計劃分配分析估計的"開銷",並選擇開銷最小 的計劃。開銷被用來估計對查詢進行求值的運行時開銷,以所需的 I/O操作、CPU要求,及其他因素來表示。通過檢查可能的訪問路 徑(例如,索引掃描、連續掃描)和聯接算法(例如,排序合併聯接、 哈希聯接、嵌套循環),形成已檢查的查詢計劃的集合。取決於SQL 查詢的複雜性,搜索空間會變得相當大。
計劃高速緩存是包含被優化的查詢訪問計劃的儲備庫。計劃高速 緩存的用途是當執行相同查詢或類似的查詢時在未來某個階段便於
重複使用查詢訪問計劃。 一旦創建了訪問計劃,它便可供所有用戶和 所有查詢使用,不管查詢是從哪裡發出的。此外,當對訪問計劃進行 調整時,例如,當創建索引時,所有查詢都可以受益於此更新的"^問 計劃。這樣就沒有必要重新優化查詢,使得效率更高,處理時間縮短。 每次執行查詢時都可以查詢計劃高速緩存,以便判斷是否有滿 足查詢的要求的有效訪問計劃存在。如果找到有效訪問計劃,則用它 來實現查詢。否則,創建新的訪問計劃,並將其存儲在計劃高速緩存 中,以備將來使用。當創建了新查詢訪問計劃時,或當有新的數據可 用時,可以自動地更新計劃高速緩存。然而,由某些查詢引擎生成的
訪問計劃不一定非要存儲在計劃高速緩存中,而是可以存儲在SQL 程序包、全系統範圍的語句高速緩存或作業高速緩存中。
圖4和5顯示了有和沒有別名時可以用來比較查詢優化的訪 問計劃高速緩存的某些部分。圖4是由常規查詢優化器生成的常規 查詢訪問計劃高速緩存20的示意圖。常規查詢優化器對查詢22進 行處理,並生成訪問計劃24的常規集合。常規訪問計劃24作為訪 問計劃高速緩存20的一部分,存儲在系統的存儲器26中。可以有 任意數量的訪問計劃存儲在常規訪問計劃高速緩存20中,分別表示 為API到APn。執行訪問計劃API到APn中的每一個,以一對 一的關係產生對應的結果集RS1到RSn。這些結果集也存儲在系統 存儲器26中。隨著運行另外的查詢,常規查詢優化器可以參考常規 訪問計劃高速緩存20以查找到將滿足正在運行的查詢的API到 APn。如果正好發現一個匹配項滿足查詢,則常規查詢優化器可以輸 出對應的結果集RS1到RSn。然而,除非以前運行了完全相同的查 詢,否則將不創建匹配,將在DBMS中包括的原始資料庫表中從頭 開始執行該查詢。這會導致許多結果集佔用存儲器26,其中大多數 永遠不會或很少會重複使用。此外,這些結果集中有許多存儲在存儲 器26中,為生成的每個訪問計劃AP,存儲了一個結果集RS。
圖5是描述了具有根據本發明的查詢優化器生成的別名30 的訪問計劃高速緩存的結構的示意圖。查詢訪問計劃高速緩存30對查詢22進行處理,並生成存儲在系統的存儲器36中的訪問計劃高 速緩存34。生成任意數量的訪問計劃API到APn。然而,查詢訪 問計劃高速緩存30進一步計算任意數量的別名,如Aliasl和 Alias2。查詢優化器不是為每一個訪問計劃AP計算結果集RS,而 是只為每個別名計算RS。理想情況下,別名數量比單個訪問計劃AP 數量少。這會提高隨後的查詢的執行速度。這還會大大地減少使用的 存儲器的量。如此,與圖5的常規查詢優化器相比,查詢訪問計劃 高速緩存30提高了效率,並縮小了操作基於別名的查詢優化器的運 行時開銷。
SQL語句也可以嵌入在某些軟體應用程式的代碼中。這樣的程 序可以使用靜態和/或動態SQL語句。靜態SQL語句是當編譯程 序時所有組件都已知的一種語句。動態SQL語句是在編譯時並非所 有的組件都已知的語言。在後一種情況下,程序在運行時接收整個語 句或語句的一部分。
圖6是根據本發明的一個實施例的搜索資料庫的方法的流程 圖。DBMS應用程式使用根據本發明的創建別名的原理,執行方法, 以簡化搜索查詢的執行。檢查器(在本實施例中,是DBMS應用程 序的組件)檢查一組SQL語句,以識別可以用來更加有效地執行這 些和/或隨後的查詢的相似性。檢查器可以根據步驟50和54尋找計 劃高速緩存內的SQL語句,根據步驟52和56尋找嵌入在另一個 軟體程序中的SQL語句,或根據步驟57尋找某些其他源。SQL語 句的源通常取決於部署了方法的上下文和環境。因此,源的選擇可以 由系統設計人員預先確定。或者,最終用戶也可以根據要在給定會話 中進行搜索的查詢的位置,作出此判斷。無論SQL語句的源是什麼, 檢查器都在步驟58中檢查該源,以搜索要為其創建別名的SQL語 句。 一般而言,檢查器尋找具有某些共同特徵,並因此可以受益於簡 化的創建別名原理的查詢。
檢查器可以在步驟58中選擇類似的查詢的一種方式是識別指 定一個或多個相同列的查詢。例如,SQL語句"SELECT State, City,
Store, AVG(Sales)"和 SQL語句"SELECT State, City, Store, SUM(Expenses)"可以被標識為用於創建別名的候選,因為執行每個查 詢將需要從資料庫中的表中選擇列State, City,以及Store。 多次 訪問資料庫表,以反覆地為許多查詢選擇那些相同的列,是重複的操 作,從而不必要地增大了運行時開銷。另一種方法是識別指定了相同 列運算的查詢。列運算是對列執行的在其原始格式下簡單地選擇該列 之外的運算。例如,SQL語句"SELECT City, SUM(Sales)..,ORDER BY City"和SQL語句"SELECT City, SUM(Sales)...ORDER BY SUM(Sales)是用於創建別名的候選,因為對Sales列執行和再次執 行同一個SUM運算是重複的。在另一個示例中,檢查器可以選擇具 有相同的FROM和WHERE子句的SQL語句。FROM子句指 定從中選擇數據的表,如FROM Sales—File。 WHERE子句指定條件, 如條件WHERE AVG(Sales) > $1,000,000。如此,在步驟58中可以 選擇指定相同表和列運算的多個查詢來創建別名。類似地,可以由檢
查器選擇指定相同GROUP BY和HAVING子句的查詢語句。還可 以由檢查器識別查詢之間的其他相似性以便創建別名。
在步驟62中,在步驟58中所選擇的查詢被用來創建滿足所有 查詢的數據集。數據集通常等於通過組合在步驟58中所選擇的所有 查詢的結果集所構成的超集。如此,為產生超集,應用程式可以簡單 地執行在步驟58中選擇的每個查詢,並將結果集組合起來。或者, 應用程式可以創建別名查詢,當執行該別名查詢的結果集時,其結果 集將等於超集。可以通過檢查單個查詢的語法來直接確定別名。然後, 可以執行別名以創建超集。例如,請回頭參看圖3,可以通過檢查查 詢Ql到Q5的語法,並有選擇地組合其中指定的列和列運算,直 接確定別名Al。然後,可以通過執行Al來創建超集,無需執行單 個查詢Ql到Q5。此方法避免了單個結果集的中間計算,進一步提 高了搜索資料庫的效率。
在創建別名和/或超集之後,應用程式在步驟64中進行檢查以 查看是否有任何要執行的查詢語句。如果是,那麼,在步驟66中,
應用程式檢查查詢語句,以搜索可以在超集中執行的查詢("目標查
詢")。在一個實施例中,在步驟62中創建超集之後,可以從用戶 隨後輸入的查詢中選擇目標查詢。例如,可以選擇指定也是由別名指 定的列或列運算的查詢作為目標查詢。或者,也可以從在步驟58中 選擇的那些查詢(如果在步驟62中它們被用來直接創建別名,而不 執行)中選擇目標查詢。如此,通過在步驟62中直接創建別名以及 其超集,現在可以在超集上執行在步驟58中選擇的查詢語句,避免 了在原始表上執行那些查詢,至少直到表數據已經改變。總之,與簡 單地在原始數據表執行所有查詢相比,縮小了運行時和關聯的開銷。 運行時縮小和開銷節省的程度可以隨著運行的查詢的數量,以及每個 別名或超集滿足的查詢的數量增大而增大。 一般而言,每個別名/超集 的查詢越多,與非別名方法相比,本方法的效率就越高。
在某些點,可能需要重新計算別名或超集,或計算新的或另外的 別名或超集。例如,步驟70檢查將觸發計算新的或更新的超集的需 求的被滿足的任何閾值。可以根據一個或多個參數(如時間)來確定 閾值。例如,在一段時間消逝以後,應用程式可以自動地重新計算任 何以前創建的超集。這樣做的一個原因是,隨著時間的推移,會定期 更新資料庫,這可能會改變在資料庫上運行的查詢的輸出。可以滿足 步驟70的另一個參數是已經運行的查詢的數量。系統設計人員可以 配置應用程式,以便在已經運行一定數量的查詢之後重新計算超集。 在步驟72中,可以響應在其上執行查詢的表的修改,重新計算超集。 步驟72可以幫助避免由於表中的材料變化所導致的輸出的不一致 性或其他誤差。
可能需要如每次更新表或一段時間消逝之後不自動地重新計算 別名和超集,因為那樣做可能產生結果的歧義。而是當已經滿足某一 閾值時,如處理了某時間段或處理了一定數量的查詢,應用程式可以 首先提示用戶是否要重新計算別名和/或超集,並且只響應肯定的用戶 輸入,才這樣做。作為對其他閾值的響應,可以不需要首先提示用戶。 例如,在宿主變量已經改變的情況下,在更新別名或超集之前, 一般
不需要提示用戶,因為那基本上是正在查詢的資料庫中所發生的變 化。
應用程式可以對任何輸出的搜索結果加蓋時間戳,創建值"檢查 點",讓用戶知道搜索結果在某一時間之前是有效的。作為對本質上 改變的宿主變量集的響應,也可以計算新的或更新的別名和/或超集。
例如,如果前100個查詢都是針對明尼蘇達州(MN)的搜索,突然 查詢開始專門針對德克薩斯州(TX),應用程式可以從新的基於德克 薩斯州的查詢計算新的別名/超集。在這些情況的任何一種情況下,應 用程序都可以返回到前面的步驟,通常返回到步驟50,開始計算新 的別名和超集。或者,也可以通過修改現有的別名來生成新的別名。 例如,如果TX查詢指定了與以前的基於MN的查詢所指定的許多 相同條件、關鍵字或命令(例如,類似的WHERE子句),則可以 通過將以前的基於MN的別名的WHERE子句中的State改變為 TX,來生成滿足TX查詢的新的別名。
某些用戶如此頻繁地執行類似的查詢,以致於生成持久的或不會 過期的別名也是可行的。例如, 一家位於特定城市和州的房地產企業 可以排他地執行指定該特定城市和州以及其他參數的房地產搜索。在 這樣的情況下,可以從別名生成"持久的實體化查詢表,,("PMQT")。 根據本發明的DBMS應用程式可以可選地建議用戶基於某一參數或 到達的閾值創建PMQT。例如,DBMS可以提示用戶基於4吏用別名 的次數、匹配特定別名的子集查詢的數量或執行別名估計的或實際需 要的時間,來創建PMQT。或者,DBMS可以被配置為在已經到達 閾值之後自動地生成PMQT。
圖7是使用根據本發明的創建別名原理的資料庫管理系統 150的示意圖。資料庫152存儲可以以表格式實現或顯示的數據。 查詢源154可以包括訪問計劃高速緩存、諸如嵌入式SQL語句之 類的嵌入式查詢,以及由最終用戶所提交的單個查詢。包括了輸入設 備156,用於向查詢源154輸入諸如查詢之類的信息,並向資料庫 152輸入數據。檢查器158檢查查詢源154以識別並選擇類似的查詢,如具有一個或多個相同的列或列運算的SQL語句。檢查器158 輸出別名160,該別名可以呈現別名查詢語句的形式。目標查詢標識 符162檢查查詢源154以識別由別名160滿足的目標查詢164。 目標查詢164可以包括在由檢查器158所選擇的類似的查詢中,它 也可以是另一個查詢,如由用戶隨後輸入的查詢。執行模塊166對 資料庫152執行別名160,並高速緩存別名查詢160的結果集。然 後,執行模塊166對別名160的結果集(該結果集可以是由檢查器 158所選擇的類似的查詢的超集)執行目標查詢164。已執行的目標 查詢164的結果集可以輸出到輸出設備168,該輸出設備168可以 包括顯示器或其他影音媒體。
應該認識到,本發明可以包含硬體和軟體元素兩者。在特定實施 例中,包括方法的那些實施例,本發明可以以軟體來實現,包括但不 僅限於固件、常駐軟體、微代碼。
此外,本發明還可以呈現電腦程式產品的形式,該產品可以 從計算機可讀取的介質進行訪問,介質提供了程序代碼,供計算機或 任何指令執行系統使用或與它們一起使用。對於此說明書,計算機可 使用的或計算機可讀取的介質可以是可以包含、存儲、傳遞、傳播或 傳輸供指令執行系統、設備使用或與它們 一起使用的程序的任何設 備。
介質可以是電子的、磁性的、光學的、電磁的、紅外線的或半導 體系統(或設備)或傳播介質。計算機可讀取的介質的示例包括半導 體或固態存儲器,磁帶,可移動計算機磁碟,隨機存取存儲器(RAM), 只讀存儲器(ROM),硬磁碟和光碟。光碟的當前示例包括光碟-只讀 存儲器(CD-ROM),光碟讀取/寫入(CD-R/W),以及DVD。
適用於存儲和/或執行程序代碼的數據處理系統將包括至少一個 通過系統總線直接或間接地連接到存儲器元件的處理器。存儲器元件 可以包括在程序代碼的實際執行過程中使用的本地存儲器,大容量存 儲器,以及高速緩沖存儲器,該高速緩沖存儲器提供了至少某些程序 代碼的臨時存儲器,以便減少在執行過程中必須從大容量存儲器檢索
代碼的次數。
輸入/輸出或I/O設備(包括但不僅限於,鍵盤、顯示器、指 示設備,等等)可以直接或者通過I/O控制器連接到系統。網絡適
配器也可以連接到系統,以使得數據處理系統通過私有的或公共網絡 連接到其他數據處理系統或遠程印表機或存儲設備。數據機,電 纜數據機和乙太網卡只是幾個當前可用的的網絡適配器類型。
為說明,圖8是在220 —般性地表示的計算機系統的示意 圖,它可以被配置為運行根據本發明的實施例的DBMS應用程式。 計算機系統220可以是呈現常規計算機系統220的形式的通用計 算設備。 一般而言,計算機系統220包括處理單元221、系統存儲 器222,以及將包括系統存儲器222的各種系統組件連接到處理單 元221的系統總線223。系統總線223可以是幾種總線結構類型中 的任何一種類型,包括存儲器總線或存儲器控制器、外圍總線,以及 使用各種總線體系結構中的任何一種的本地總線。系統存儲器包括只 讀存儲器(ROM) 224和隨機存取存儲器(RAM) 225。基本輸入/輸 出系統(BIOS) 226存儲在ROM 224中,包含了諸如在啟動過程中 幫助計算機系統220之間的多個元件之間傳輸信息的基本例程。
計算機系統220進一步包括用於從硬碟227中讀取和向其中 寫入的硬碟驅動器235,用於從可移動磁碟229中讀取或向其寫入 的磁碟驅動器228,以及用於從諸如 CD-R、 CD-RW、 DV-R或 DV-RW之類的可移動光碟231中讀取或向其中寫入的光碟驅動器 230。硬碟驅動器235、磁碟驅動器228,以及光碟驅動器230分別 通過硬碟驅動器接口 232、磁碟驅動器接口 233,以及光碟驅動器接 口 234連接到系統總線223。雖然這裡所描述的示範性環境使用了 硬碟227、可移動磁碟229、以及可移動光碟231,但是,那些精通 本技術的普通人員應該理解,在示範性操作環境中也可以使用諸如盒 式磁帶、快擦寫存儲卡、數字視盤、伯努利磁帶盒、RAM、 ROM、 USB驅動器之類可以存儲可由計算機進行訪問的數據的其他類型的 計算機可讀的介質。驅動器以及它們關聯的計算機可讀的介質提供了
計算機可執行的指令、數據結構、程序模塊,及計算機系統220的 其他數據的非易失存儲器。例如,作業系統240和應用程式236可 以存儲在計算機系統220的RAM 225和/或硬碟227中。
用戶可以通過諸如鍵盤255和滑鼠242之類的輸入設備 1132向計算機系統220中輸入命令和信息。其他輸入設備(未顯示) 可以包括麥克風、遊戲杆、遊戲墊、觸摸板、掃描儀等等。這些及其 他輸入設備常常通過連接到系統總線223的USB(通用串行總線) 246連接到處理單元222,但是也可以通過諸如串行埠接口 、並行 埠、遊戲埠等等之類的其他接口進行連接。顯示設備247也可 以通過諸如視頻適配器248之類的接口連接到系統總線223。除了 監視器之外,個人計算機還通常包括其他外圍輸出設備(未顯示), 如揚聲器和印表機。
計算機系統220可以使用到一個或多個遠程計算機249的邏 輯連接在聯網的環境中操作。遠程計算機249可以是另一個個人計 算機、伺服器、客戶端、路由器、網絡PC、對等設備、大型機、個 人數字助理、與網際網路連接的行動電話或其他公用網絡節點。儘管遠 程計算機249通常包括上文參考計算機系統220所描述的許多或 全部元件,但是,圖8隻顯示了存儲器設備250。圖中所描迷的邏 輯連接包括區域網(LAN) 251和廣域網(WAN) 252。這樣的聯網環 境在辦公室、企業範圍的計算機網絡、內部網和網際網路中是普遍現象。 當在LAN聯網環境中使用時,計算機系統220常常通過網絡 接口或適配器253連接到區域網251。當在WAN聯網環境中使用 時,計算機系統220通常包括數據機254或其他用於通過諸如 網際網路之類的WAN 252建立高速通信的其他裝置。數據機254 (可以是內置的或外置的),通過USB接口 246連接到系統總線 223。在聯網的環境中,參考計算機系統220所描述的程序模塊,或 其某些部分,可以存儲在遠程存儲器設備250中。可以理解,所顯 示的網絡連接只是示範性的,也可以使用在計算機之間建立通信鏈路 的其他裝置。
程序模塊可以存儲在硬碟227、光碟231、 ROM 224、 RAM 225 上,甚至可以存儲在磁碟229上。程序模塊可以包括作業系統240、 DBMS應用程式236等等的某些部分。包括了 SQL資料庫238, 該資料庫238可以包括以表的形式排列的數據,和/或可以以表的形 式輸出的數據。可以由用戶和/或DBMS應用程式236輸入SQL 資料庫238中的數據,並可定期進行更新。也可以包括用戶首選項 資料庫239。
根據本發明的方法可以通過DBMS應用程式236來實現。 DBMS應用程式236可以是才艮據本發明而i殳計的軟體應用程式。或 者,DBMS應用程式也可以包括常規DBMS應用程式以及根據本發 明的諸如別名組件之類的一個或多個應用程式組件。DBMS應用程式 236在可以包括多個表的SQL資料庫238上執行查詢。DBMS應 用程序236 —般包括用於查詢SQL資料庫238的計算機可執行 的指令。
如權利要求和這裡的說明中所使用的"包括"和"具有",應該被視 為指出可以包括未i兌明的其他元素的開放的組。術語"a"、 "an"和單 詞的單數形式應該被視為包括相同單詞的複數形式,以便該術語意味 著提供了 一個或多個某種東西。術語"一個,,或"單個,,可以用來表示一 個和只有一個某種東西。類似地,當指特定數量的東西時,可以使用 諸如"兩個"之類的其他特定整數值。術語"優選情況下"、"優選"、"首 選","可選地","可以"和類似的術語被用來表示被引用的項、條件 或步驟是本發明的可選(不是必需的)特徵。
儘管是參考數量有限的實施例來描述本發明,但是,本領域技 術人員,在了解本發明的優點之後,將理解,也可以設計出不偏離如 這裡所說明的本發明的範圍的其他實施例。相應地,本發明的範圍只 能由所附的權利要求來加以限制。
權利要求
1.一種搜索資料庫的方法,包括選擇多個查詢;從資料庫表中選擇數據;從所述選擇的數據創建數據集,以滿足所述選擇的多個查詢;選擇由所述數據集滿足的目標查詢;以及對所述數據集執行所述目標查詢。
2. 根據權利要求1所述的方法,其中,創建所述數據集的步 驟包括計算所述多個查詢中的每一個查詢的結果集,並將計算出的 結果集組合起來,以形成超集。
3. 根據權利要求1所述的方法,其中,創建所述數據集的步 驟進一步包括創建滿足所述多個查詢的別名查詢,並執行所述別名 查詢以輸出所述數據集。
4. 根據權利要求3所述的方法,其中,選擇所述目標查詢的 步驟包括選擇指定一個或兩個列的查詢以及由所述別名查詢指定的 列運算。
5. 根據權利要求1所述的方法,其中,選擇所述目標查詢的 步驟包括選擇指定所述數據集的列的查詢。
6. 根據權利要求1所述的方法,其中,選擇多個查詢的步驟 包括選擇指定一個或多個相同列的查詢。
7. 根據權利要求1所述的方法,其中,選擇多個查詢的步驟 包括選擇指定一個或多個基本上等效的操作的查詢。
8. 根據權利要求1所述的方法,其中,選擇多個查詢的步驟 包括選擇具有基本上等效的WHERE和FROM子句的查詢。
9. 根據權利要求1所述的方法,其中,選擇多個查詢的步驟 包括選擇具有一個或兩個基本上等效的GROUP BY子句和基本上 等效的HAVING子句的查詢。
10. 根據權利要求1所述的方法,進一步包括從訪問計劃高速 緩存中選擇多個查詢。
11.根據權利要求1所述的方法,進一步包括從嵌入式查詢中 選擇多個查詢。
12. 根據權利要求1所述的方法,進一步包括對所述執行的目 標查詢的結果集執行一個或多個另外的操作。
13. 根據權利要求1所述的方法,進一步包括 提示用戶是否創建另一個超集;以及 響應用戶輸入,有選擇地創建所述另一個超集。
14. 根據權利要求1所述的方法,進一步包括在預先確定的時 間段之後創建另一個超集。
15. 根據權利要求1述的方法,進一步包括響應所述資料庫表 的修改,創建另一個超集。
16. 根據權利要求l述的方法,進一步包括響應隨後的查詢的宿 主變量的變化,創建另一個超集。
17. 根據權利要求1所述的方法,進一步包括在到達預先確定 的閾值之後從別名生成實體化的查詢表。
18. —種系統,包括用於實現根據權利要求1-17中的任何一個 權利要求所述的方法的步驟的裝置。
全文摘要
說明了用於搜索資料庫的資料庫管理系統和方法。在一個實施例中,檢查器檢查計劃高速緩存或包含嵌入式查詢的程序。識別多個類似的查詢,並生成滿足多個查詢的別名。別名可以在資料庫上執行,以輸出結果集。屬於別名的查詢可以執行別名的結果集上執行,而不是在資料庫上執行。相應地,與常規資料庫管理系統相比,提高了效率,並降低了運行時開銷。
文檔編號G06F17/30GK101178727SQ20071016981
公開日2008年5月14日 申請日期2007年11月7日 優先權日2006年11月8日
發明者保爾·R.·戴伊, 布賴恩·R.·姆拉斯, 託馬斯·O.·邁克金利 申請人:國際商業機器公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀