文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  伺服器端游標的限制

15.6.6.5 伺服器端游標的限制

伺服器端游標是透過 C API 中使用 mysql_stmt_attr_set() 函式來實作的。相同的實作方式也用於儲存程序中的游標。伺服器端游標允許在伺服器端產生結果集,但除了用戶端請求的列之外,不會傳輸到用戶端。例如,如果用戶端執行一個查詢,但只對第一列感興趣,則其餘列不會傳輸。

在 MySQL 中,伺服器端游標會實體化為內部臨時表。最初,這是一個 MEMORY 表,但當其大小超過 max_heap_table_sizetmp_table_size 系統變數的最小值時,會轉換為 MyISAM 表。與其他使用內部臨時表的情況一樣,為游標保存結果集而建立的內部臨時表也適用相同的限制。請參閱第 10.4.4 節「MySQL 中內部臨時表的使用」。此實作的一個限制是,對於大型結果集,透過游標檢索其列可能會很慢。

游標是唯讀的;您無法使用游標來更新列。

由於不支援可更新的游標,因此未實作 UPDATE WHERE CURRENT OFDELETE WHERE CURRENT OF

游標是不可保持的(在 commit 後不會保持開啟)。

游標是不敏感的。

游標是不可捲動的。

游標沒有命名。語句處理器充當游標 ID。

每個預備語句只能有一個開啟的游標。如果您需要多個游標,則必須準備多個語句。

如果語句在預備模式下不受支援,則您不能將游標用於產生結果集的語句。這包括諸如 CHECK TABLEHANDLER READSHOW BINLOG EVENTS 等語句。