我想知道如何使用Java获取解释计划。我之所以需要它,是因为我们有一个特殊用户可以编写报告的框架。这些报告有时会生成大量查询,我们想在其中动态解释并存储其成本。这样,我们可以稍后分析高成本查询并进行优化。
给我非法列异常的示例代码:
ResultSet rs = null;
try {
oracle = ConnectionManager.getConnection(ConnectionManager.Test);
pstmt = oracle.prepareStatement("begin execute immediate
'explain plan for SELECT 1 from Dual'; end;");
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}
用这个:
oracle = ConnectionManager.getConnection(ConnectionManager.Test);
stmt = oracle.createStatement()
stmt.execute(“ Dual的SELECT 1的解释计划”);
rs = stmt.executeQuery(“从表中选择plan_table_output(dbms_xplan.display())”);
而(rs.next())
{
System.out.println(rs.getString(1));
}
我在用阿帕奇凤凰和HBase。但是即使是像count(*)这样的简单查询也需要大约2-3秒。 这是预期的响应时间还是我漏掉了什么。
问题内容: 我有一个供用户使用的表,该表具有一个名为“ created”的字段,该字段具有注册日期。 如何获得包含过去12个月每月注册数量计数的列表?像这样: 我不习惯使用mysql,所以直到现在,我只知道如何计算去年的注册数量,而不是如何按最近12个月的数量进行分组。提前致谢! 更新 现在,我使用@fthiella解决方案来得到这个: 我如何强制查询给我计数为0的月份? @fthiella解决方
问题内容: 我已经阅读了一些博客和一些与优化有关的文章,介绍了如何优化查询。我读到我需要使用索引,并确保使用良好的关系数据库架构正确设置了所有主键和外键。 现在,我有一个查询需要优化,并且可以在上获得此查询: 我正在使用MySQL 5.5 我知道我正在使用但不使用我的临时表或文件排序吗?这是什么意思? 问题答案: 使用临时意味着MySQL需要使用一些临时表来存储执行查询时计算出的中间数据。 使用文
问题内容: 在我的代码中,我正在使用。 然后,我执行该方法以填充准备好的语句的通配符。 在调用该方法并执行查询之前,我是否有办法检索(并打印出)最终查询?我只想将此用于调试目的。 问题答案: 这在JDBC API合同中没有定义,但是如果幸运的话,有问题的JDBC驱动程序可以通过调用来返回完整的SQL 。即 以我的经验,至少这样做是PostgreSQL 8.x和MySQL 5.x JDBC驱动程序。
问题内容: 是否有可能获得总表,并在相同的查询。像这样的东西 问题答案: 您可以随时尝试执行以下操作: 该子句将为您提供查询中所有行的计数。
我正在对spark sql查询执行计划进行一些分析。explain()api打印的执行计划可读性不强。如果我们看到spark web UI,就会创建一个DAG图,该图分为作业、阶段和任务,可读性更高。是否有任何方法可以从执行计划或代码中的任何API创建该图?如果没有,是否有任何API可以从UI读取该grap?