我有一个批量的SQL基准查询,我想执行并计算它们的时间。我不想要使用命令EXECUTE ANALYZE获取执行计划。
基于此处建议的方法Get execution time of PostgreSQL query 我编写了一个过程,为每个查询包含以下代码
-------------------------
Query = 'Q1';
StartTime := clock_timestamp();
PERFORM <** Query 1 goes here **>
EndTime := clock_timestamp();
Duration := 1000 * ( extract(epoch from EndTime) - extract(epoch from StartTime) );
INSERT INTO execution_tests VALUES (Query, StartTime, EndTime, Duration);
-------------------------
我使用PERFORM而不是SELECT来执行查询并丢弃结果。
这适用于简单查询,但我有许多具有WITH子句的查询。根据手册
对于WITH查询,请使用PERFORM,然后将查询放在括号中。 (在这种情况下,查询只能返回一行。)
但是,我需要进行基准测试的所有WITH查询都会返回多行。
如何解决这个问题?
答案 0 :(得分:1)
像
这样的东西session_start();
foreach ($_POST as $key => $value) {
$_SESSION['post'][$key] = $value;
}
extract($_SESSION['post']);
if (isset($_POST["submit"])) {
extract($_SESSION['post']);
//global $wpdb;
//$wpdb->insert("tablename", array("data" => $_SESSION["data"], array("%s"));
include 'dbconnect.php';
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO tablename ( data ) VALUES ( '{$data}' )";
$conn ->exec($sql);
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$conn = null;
session_destroy();
}