mysql準備語句
mysql支援準備語句,即在執行真正的查詢前,將查詢的模式先傳送到伺服器進行解析,將解析和優化的結果儲存下來,在一些程式設計庫中支援這種功能,通過準備語句可以很高效的在客戶端和伺服器端進行資料傳送。
準備語句中,將?作為引數,例如:
insert into people(last_name,first_name) values(?,?);
mysql將把乙個狀態控制代碼傳送給客戶端,客戶端根據狀態控制代碼把每個問號對應的值傳送到伺服器執行查詢,具體方式取決與程式語言
準備語句具有以下優點:
1.只需解析一次查詢
2.快取了部分執行計畫
3.使用二進位制傳送引數,速度更快
4.只傳送引數,減少網路流量
5.引數被儲存在伺服器緩衝區,無需在記憶體中到處拷貝資料
除了函式庫,mysql也有準備語句的sql介面,例如:
mysql> set @sql = 'select * from people where last_name = ?';
query ok, 0 rows affected (0.00 sec)
mysql> prepare pre_test from @sql;
query ok, 0 rows affected (0.00 sec)
statement prepared
mysql> set @name ='zz11';
query ok, 0 rows affected (0.00 sec)
mysql> execute pre_test using @name;
| last_name | first_name | dod | gender |
| zz11 | ss | 0000-00-00 | m |
1 row in set (0.01 sec)
通過這種方法,可以在儲存過程內實現一種類似「動態sql」的效果。但注意這裡sql介面使用的並不是二進位制協議。
準備語句具有一些侷限:
1.只針對乙個連線;
2.不能使用5.0之前的快取
3.不能在儲存函式內使用
4.如果忘記銷毀,可能在伺服器端產生資源洩漏,並且有乙個全域性引數限定儲存語句數量。
MySQL筆記(MYSQL準備語句)
mysql準備語句 mysql支援準備語句,即在執行真正的查詢前,將查詢的模式先傳送到伺服器進行解析,將解析和優化的結果儲存下來,在一些程式設計庫中支援這種功能,通過準備語句可以很高效的在客戶端和伺服器端進行資料傳送。準備語句中,將?作為引數,例如 insert into people last n...
mysql執行準備 MySQL準備語句
mysql準備語句 prepared statements 使用增強的二進位制客戶端 伺服器協議在客戶端和伺服器之間高效的傳送資料,可以通過支援這種行協議的程式設計庫來訪問準備語句。建立準備語句時,客戶端庫會像伺服器傳送乙個實際查詢的原型,然後伺服器對該原型進行解析和處理,將部分優化過的原型儲存起來...
MySQL準備語句
mysql準備語句 prepared statements 使用增強的二進位制客戶端 伺服器協議在客戶端和伺服器之間高效的傳送資料,可以通過支援這種行協議的程式設計庫來訪問準備語句。建立準備語句時,客戶端庫會像伺服器傳送乙個實際查詢的原型,然後伺服器對該原型進行解析和處理,將部分優化過的原型儲存起來...