簡體   English   中英

我應該選擇哪個DBMS來使用Java重新排序查詢執行計划?

[英]Which DBMS should i choose for reordering query execution plan using Java?

我正在啟動一個Research項目,該項目涉及評估查詢執行計划的每個分支中的執行成本,並為給定大數據集,該程序將重新編寫查詢執行計划,以便可以在特定時限內執行查詢。

我有使用Java和oracle的經驗,但是我沒有使用NoSql數據庫的經驗,我確實有很多選項,如Pig,Casandara和CouchDB,這些都是我最初閱讀的。 我的問題如下:

  1. 我可以使用JDBC在Oracle中對查詢執行計划進行重新排序嗎?
  2. 進行此類項目的最佳選擇是什么(可能是最支持的DBMS)?

查詢執行計划是DBMS邏輯的一部分,可以執行聲明性的SQL願望。 在對SQL Server進行SQL查詢時,會有一個階段,查詢被“優化”以運行基礎功能(哪個和何時)。 SQL只是一種讓DBMS知道所需內容的方法。 我從您的問題中了解到的是,您希望擁有一個工具來“預先”優化查詢。 Qracle和DB2有一些簡潔的工具可以做到這一點,無論是在生產中,還是在使用供應商提供的工具分析傳入的查詢之前。

由於SQL是聲明式的願望,因此您可以通過最小化要查找的數據量來優化查詢。 在Oracle中使用with語句只能處理DB2中的一部分或子查詢語句。 不要在MySQL中使用子查詢。 避免在postgreSQL中使用許多和語句in而是使用in

由於查詢執行計划是您使用的DBMS的一部分,因此您必須先購買DBMS的飲料,然后才能進行所有優化。

我認為沒有像Oracle Hints這樣的NoSql查詢之類的東西。 此外(至少MongoDB)不支持聯接,因此優化查詢的空間要少得多,因為它們始終作用於單個集合。

例如,MongoDb支持的是對屬性建立索引以基於它們優化搜索查詢。 但是,每當需要某種Join時,您都會對其發出兩個請求。

也許值得一看一下mongos 聚合機制。 在那可以在服務器端處理聚合(僅在單個集合上)。 但是,即使在那兒,在查詢到達數據庫之前,我也沒有多少空間可以優化查詢。

說明操作符提供有關調試和優化mongoDB查詢的更多信息。

有關優化MongoDB的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM