远程数据库查询速度慢

时间:2012-05-26 00:56:58

标签: php sql adodb freetds

我有:

  • 使用PHP 5.3.2和Apache 2.0的Linux服务器
  • 带有SQL SERVER的Windows服务器

我使用unixODBC 2.3.1和FREETDS 0.9.1

将我的linux服务器与数据库连接起来

连接没问题,但查询速度很慢。 以下是生成下图的代码:

$this->adodb->LogSQL(true); // turn on logging
$query = "select c.name, t.name, c.length from syscolumns c join systypes t on t.xusertype = c.xusertype
          join sysobjects o on o.id=c.id where o.name = 'CONDOMINIO'";
$res = $this->adodb->Execute($query);
$this->adodb->LogSQL(false); // turn off logging
$perf = NewPerfMonitor($this->adodb);
echo $perf->SuspiciousSQL();
echo $perf->ExpensiveSQL();

Image http://www.vigoonline.net/slow.png

如您所见,第一个查询的平均时间为4.68秒,这太慢了。

如果我执行相同的查询:

$this->adodb->_query($query);

然后,执行查询的时间不到一秒就可以了。还有其他人经历过同样的事吗?

使用“Execute”调用的查询用于自己的类,用于从表中提取“MetaColumns”信息

表“CONDOMINIO”只有21行。

如果服务器数据库与应用程序脚本在同一台机器上,那么响应很快!

1 个答案:

答案 0 :(得分:1)

我自己解决了这个问题。 这是我做的:

转到文件/adodb/drivers/adodb-odbc.inc.php和课程ADODB_odbc

这里试图找到:

var $curmode = SQL_CUR_USE_DRIVER

并将其更改为:

var $curmode = SQL_CUR_USE_IF_NEEDED;

这将使连接在需要时使用SQL_CUR_USE_ODBC,并且“Voila”DB访问SQL服务器的速度非常快!