[英]Slow query on remote database
我有:
我將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.