### **1. 为什么要使用pl/lua**
#### pl/lua是一个插件,可以使用lua语言写PostgreSQL的存储过程和函数,使用lua语言有如下几个好处,
#### 可以大大提升存储过程的性能,特别是循环的性能。
#### 在PostgreSQL中数组或一些json对象都是不可变的,如往数组或json对象中添加元素时,需要把拷贝源对象而生成一个新对象,导致很大的开销。而使用lua语言的list和table对象就没有这个问题了。
#### lua语言的语法更灵活。
#### 也就是当我们需要在存储过程或函数中做一些密集的运算,使用plpgsql会比较慢,而使用pl/lua会提升10倍以上的性能。这个提升还是很观的,所以建议这些存储过程使用pllua来编写。
### **2. 我们先看看性能**
#### **2.1 查看循环的效率**
#### 我们分别使用pllua和pgplsql建两个循环的函数:
```
create or replace function f_pl01(cnt int) returns int language plpgsql as $$
declare
i int;
begin
i:=0;
LOOP
i = i + 1;
EXIT WHEN i >= cnt;
END LOOP;
return i;
end;
$$;
```
```
create function f_lu