0

私は持っている:

  • PHP 5.3.2 および Apache 2.0 を使用する Linux サーバー
  • SQL SERVER を備えた Windows サーバー

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

次に、クエリの実行にかかる時間は 1 秒未満です。他の誰かが同じことを経験しましたか?

「Execute」で呼び出されるクエリは、テーブルから「MetaColumns」情報を取得するための独自のクラスに使用されます

テーブル「CONDOMINIO」には 21 行しかありません。

サーバー データベースがアプリケーション スクリプトと同じマシンにある場合、応答は高速です。

4

1 に答える 1

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され、SQLサーバーへの「Voila」DBアクセス速度が非常に速くなります。

于 2012-09-18T14:43:36.207 に答える