繁体   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