MySQL的限制和限制/服务器端游标的限制

第四章服务器端游标的限制

类在C API中实现服务器端游标mysql_stmt_attr_set ()函数。存储例程中的游标也使用相同的实现。服务器端游标允许在服务器端生成结果集,但不将结果集传输到客户端,除非客户端请求那些行。例如,如果客户端执行一个查询,但只对第一行感兴趣,则不会传输其余行。

在MySQL中,服务器端游标被物化为一个内部临时表。最初,这是一个内存表,但被转换为MyISAM类的最小值时,将调用max_heap_table_size而且tmp_table_size系统变量。为保存游标的结果集而创建的内部临时表与内部临时表的其他用途一样,也受到同样的限制。看到内部临时表在MySQL中的使用.该实现的一个限制是,对于大型结果集,通过游标检索其行可能很慢。

游标是只读的;不能使用游标更新行。

更新当前的而且删除当前的没有实现,因为不支持可更新游标。

游标是不可保持的(提交后不会保持打开)。

游标是敏感的。

游标不可滚动。

游标没有命名。语句处理程序充当游标ID。

每个准备好的语句只能打开一个游标。如果需要多个游标,则必须准备多个语句。

如果在准备模式下不支持生成结果集的语句,则不能对该语句使用游标。这包括如下语句检查表处理程序读,显示binlog事件