php+mysql中,使用mysql的儲存過程其實是很好的,而且效率還會快點的,
在這裡,小結複習下mysql的用法吧,使用的是pdo
1//不使用儲存過程
$time = microtime(true);
$mem = memory_get_usage();
$dsn = 'pgsql:host=localhost;dbname=gonzalo;port=5432';
$user = 'user';
$password = 'password';
$conn = new pdo($dsn, $user, $password);
$conn->setattribute(pdo::attr_errmode, pdo::errmode_exception);
$conn->begintransaction();
$stmt = $conn->prepare('delete from web.tbltest');
$stmt->execute();
$stmt = $conn->prepare('insert into web.tbltest (field1) values (?)');
foreach (range(0,1000) as $i)
$conn->commit();
print_r(array('memory' => (memory_get_usage() - $mem) / (1024 * 1024), 'seconds' => microtime(true) - $time));
2 使用儲存過程
儲存過程的寫法:
create or replace function web.method1()
returns numeric as
$body$
begin
delete from web.tbltest;
for i in 0..1000 loop
insert into web.tbltest (field1) values (i);
end loop;
return 1;
end;
$body$
language plpgsql volatile
cost 100;
$time = microtime(true);
$mem = memory_get_usage();
$dsn = 'pgsql:host=localhost;dbname=gonzalo;port=5432';
$user = 'user';
$password = 'password';
$conn = new pdo($dsn, $user, $password);
$conn->setattribute(pdo::attr_errmode, pdo::errmode_exception);
$conn->begintransaction();
$stmt = $conn->prepare('select web.method1()');
$stmt->execute();
$stmt->setfetchmode(pdo::fetch_assoc);
$out = $stmt->fetchall();
$conn->commit();
print_r(array('memory' => (memory_get_usage() - $mem) / (1024 * 1024), 'seconds' => microtime(true) - $time));
可以看到結果對比如下:
without stored procedures
memory: 0.0023880004882812
seconds: 0.31109309196472
with stored procedures
memory: 0.0020713806152344
seconds: 0.065021991729736
可以看到,用了儲存過程的效能還是不錯的
Oracle中儲存過程
1 建立乙個儲存過程 create or replace procedure pro name parameter1 parameter2 is as begin plsql sentences pl sql語句,儲存過程功能實現的主體 exception dowith sentences 異常處理...
mysql中儲存過程
delimiter,簡單解釋下這個命令的用途,在mysql中每行命令都是用 結尾,回車後自動執行,在儲存過程中 往往不代表指令結束,馬上執行,而delimiter原本就是 的意思,因此用這個命令轉換一下 為 這樣只有收到 才認為指令結束可以執行 檢視myql中已經存在的儲存過程 show proce...
mysql中儲存過程
儲存過程,其本質還是函式 但其規定 不能有返回值 說明 1,in 用於設定該變數是用來 接收實參資料 的,即 傳入 預設不寫,就是in 2,out 用於設定該變數是用來 儲存儲存過程中的資料 的,即 傳出 即函式中必須對它賦值 3,inout 是in和out的結合,具有雙向作用 4,對於,out和i...