1.mysql游标特性及性能
-
游标只能向一方向前进,并且不可以跳过任何一行数据
-
MySQL在服务器提供的只读的,单向的游标,而且只能存储过程或者更底层的客户端API中使用。因为MySQL游标中指向的对象都是存储在临时表中而不是实际查询到的数据,所以游标总是只读的。
-
游标会让mysql执行一些额外的I/O操作,而这些操作的效率可能非常低。
-
因为临时内存表不支持blob和text类型,如果游标返回的结果包含这样的列,mysql就的必须创建临时磁盘表来存放,会导致性能可能很糟糕。
2.游标使用场景
- 存储过程
- 函数
- 触发器
- 事件
3.游标常用操作
- 常与loop循环结合使用
## 定义游标
declare cursor_name cursor for select_statement
## 打开游标
open cursor_name
## 读取游标中的数据
fetch cursor_name info var_name [,var_name] ...
## 关闭游标
close cursor_name
## 释放游标
deallocate cursor_name
注意:如果在关闭游标的时候,你只是扫描一个大结果集的一小部分,那么在存储过程可能不仅没有减少开销,相反带来了大量的额外开销。这时,你需要考虑使用limit来限制返回的结果集。