簡體   English   中英

遠程數據庫查詢緩慢

[英]Slow query on remote database

我有:

  • 具有PHP 5.3.2和Apache 2.0的Linux服務器
  • 具有SQL SERVER的Windows Server

我將Linux服務器與具有unixODBC 2.3.1和FREETDS 0.9.1的數據庫連接

連接正常,但查詢速度很慢。 這是生成下面圖像的代碼:

$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();

圖片http://www.vigoonline.net/slow.png

如您所見,第一個查詢的平均時間為4.68秒,太慢了。

如果我像這樣執行相同的查詢:

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

然后,執行查詢的時間不到一秒鍾,這真是太棒了。 有沒有其他人經歷過同樣的事情?

使用“ Execute”調用的查詢用於自己的類,以從表中獲取“ MetaColumns”信息

表“ CONDOMINIO”僅具有21行。

如果服務器數據庫與應用程序腳本位於同一台計算機上,則響應速度很快!

我自己解決了。 這是我所做的:

轉到文件/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 ,並且對SQL Server的“ Voila” DB訪問速度確實非常快!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM