我正在启动一个研究项目,该项目涉及评估查询执行计划的每个分支中的执行成本,并且给定一个大数据集,程序将重新编写查询执行计划,以便可以在特定时间范围内执行查询。
我有java和oracle的经验,但我没有使用NoSql数据库的经验,我有很多选项,如我最初阅读的Pig,Casandara,CouchDB。 我的问题如下:
答案 0 :(得分:0)
查询执行计划是DBMS Logic的一部分,用于执行声明性SQL愿望。 当你向SQL Server发出SQL查询时,有一个阶段,你的查询被“优化”以运行底层函数(何时和何时)。 SQL只是让DBMS知道你想要什么的一种方式。 我从你的问题中了解到,你希望有一个工具来“预先” - 优化你的查询。 Qracle和DB2有一些简洁的工具可以在生产中,分析传入的查询,或之前,使用供应商提供的工具。
由于SQL是声明性的愿望,因此您可以通过最小化要查找的数据量来优化查询。使用Oracle中的with
语句仅处理DB2中的部分或子查询语句。不要在MySQL中使用子查询。避免使用postgreSQL中的许多语句,而是使用in
。
由于查询执行计划是您使用的DBMS的一部分,因此您必须首先购买DBMS饮料,然后才能全面了解并优化;)
答案 1 :(得分:0)
我认为没有针对NoSql查询的Oracle提示。此外(至少MongoDB)不支持连接,因此优化查询的空间更小,因为它们总是作用于单个集合。
例如MongoDb支持对属性进行索引,以根据它们优化搜索查询。但是无论何时你需要某种联接,你都会发出两个请求。
也许值得一看mongos Aggregation机制。这就是你可以在服务器端处理聚合的地方(仅限单个集合)。但即使在那里,我也没有看到很多空间来优化查询到达数据库之前。
explain operator提供了有关调试和优化mongoDB查询的更多信息。
的信息