無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: D 制限と規制 :: D.2 サーバサイドカーソルの規制
« D.1 ストアド ルーチンとトリガの規制

D.3 サブクエリの規制 »
Section Navigation      [Toggle]
  • D 制限と規制
  • D.1 ストアド ルーチンとトリガの規制
  • D.2 サーバサイドカーソルの規制
  • D.3 サブクエリの規制
  • D.4 ビューの規制
  • D.5 XA トランザクションの規制
  • D.6 MySQL の制限

D.2. サーバサイドカーソルの規制

サーバサイドカーソルは、mysql_stmt_attr_set() 関数を介して C API に実装されます。ストアド ルーチンのカーソルにも同じ実装が使用されます。サーバサイドカーソルによって、結果セットをサーバ側で生成することが可能になりますが、クライアントが請求した行以外をクライアントに転送することはできません。例えば、もしクライアントがクエリを実行し、しかし最初の行しか必要としない場合は、残りの行は転送されません。

MySQL では、サーバサイドカーソルは一時テーブルへと出力されます。最初、これは MEMORY テーブルになりますが、そのサイズが max_heap_table_size システム変数の値に達すると、MyISAM テーブルに変換されます。この実装の制限のひとつとして、大きな結果セットでは、カーソルでの行の呼び出しに時間がかかる場合があります。

カーソルは読み取り専用で、カーソルを行のアップデートに使用することはできません。

UPDATE WHERE CURRENT OF および DELETE WHERE CURRENT OF は、アップデート可能なカーソルはサポートされていないため実装されていません。

カーソルは保持不可能 ( コミットの後で開いたままにしておくことができない )。

カーソルはセンシティブです。

カーソルはスクロール不可能。

カーソルに名称は付いていません。ステートメント ハンドラがカーソル ID として作用します。

プリペアド ステートメントごとに、カーソルをひとつだけ開いておくことができます。複数のカーソルが必要な場合は、複数のステートメントを準備しなければなりません。

結果セットを生成するステートメントで、準備モードでサポートされていないものにはカーソルを使うことはできません。そのようなステートメントには、CHECK TABLES 、HANDLER READ 、そして SHOW BINLOG EVENTS があります。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.