我有:
我使用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行。
如果服务器数据库与应用程序脚本在同一台机器上,那么响应很快!
答案 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服务器的速度非常快!