PHP创建一个临时表,并在Next查询中使用它(来自Microsoft的SQL Server 2008)


PHP create a temp Table and use it in the Next query (SQL Server 2008 from Microsoft)

我有以下问题。我有一个巨大的数据库和一个长查询。为了加快DB请求的速度,我使用了一个临时表,它在Server Managment Studio上运行得很好。现在我想把这个查询放在我的php代码中,但它不起作用。

代码看起来像这个

示例:

$sql="
/*First Select and creating the tmp table:*/
SELECT data, data2, data3 INTO #tmp
FROM dbo.data
INNER JOIN ...
WHERE ...  ;
/*Second Select wich is the main select:*/
SELECT data, data2, data3
FROM #tmp tmp
INNER JOIN otherTableOnServer
WHERE ....
UNION
SELECT data, data2, data3 
FROM #tmp tmp
INNER JOIN otherTableOnServer
INNER JOIN otherTableOnServer2
LEFT OUTER JOIN otherTableOnServer3
....
";
$result=sqlsrv_query($conn2,$sql);
            $content=array();
            while($row=sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)){
            $content[]=$row;
}

等等

注意:php代码运行良好,只有当我在代码中使用查询时,它才不起作用。没有错误消息,创建的页面通过,但没有查询结果。

我使用SQL Server 2008 R2和当前版本的PHP。

单个#表示一个本地临时表,该表只能从创建它的会话中访问。

附加##而不是#,使临时表成为全局的,并且可以从创建它的会话外部访问。