mysql API中的引數繫結問題

2021-06-07 06:07:29 字數 812 閱讀 6624

用慣了oracle,用mysql還真不習慣。

一般來說,執行語句前,資料庫引擎需要將語句翻譯成執行計畫,這就是典型的sql解析過程。而且執行後的sql會被放在緩衝區中,下次再執行同樣的語句能提高效能。

對於oracle來說,不同的sql太多會導致共享池耗滿,產生問題。因此,使用oracle資料庫的時候,不能將變數格式化成字串組合成sql,這樣不但影響效能,還會影響資料庫的穩定性。一般會在sql語句中使用:name這樣的格式來預留下引數的位置,執行的時候將變數繫結上去。引數繫結的方法能大大提高效能。

而mysql中呢?

最初使用mysql++的時候,看到query物件中可以在sql語句中使用%0, %1,%2這樣的佔位符來預留引數,然後使用parse()方法解析語句,然後在執行的時候加上變數。難道,原理和oracle一樣,可以提高效能?

看了mysql++的實現後,大失所望:mysql++只是方便了使用者而已,採用逐個字元解析的辦法從sql語句中提取出%0,%1等佔位符,然後根據實際傳入的變數組合成sql語句,並沒有提高效能…………

答案還必須到mysql的api中去尋找:終於在mysql文件的25.2.7.10節看到乙個例子:使用mysql_stmt。文件中的例子**就不在此處貼出來了,需要的朋友可以去這裡檢視:

總結下來就是:

1、mysql_stmt這個功能可以具備oracle一樣的繫結變數功能;

2、照文件上說,使用mysql_stmt是可以提高效能的;(下一步將對比效能的差異究竟是多大)

3、佔位符是問號,例如:insert into tab(a,b,c)values(?,?,?)

希望,mysql_stmt可以提高效能。

SpringMVC中的引數繫結總結

眾所周知,springmvc是用來處理頁面的一些請求,然後將資料再通過檢視返回給使用者的,前面的幾篇博文中使用的都是靜態資料,為了能快速入門springmvc,在這一篇博文中,我將總結一下springmvc中如何接收前台頁面的引數,即springmvc中的引數繫結問題。我們可以回憶一下,在strut...

關於WPF中DataGrid資料繫結的問題

關於wpf中datagrid資料繫結的問題 繫結的資料來源可以是datatable,可以是observablecollection 比如 在這裡插入 片 public observablecollection yuan new observablecollection public class st...

ibatis中的order by 引數配置問題

昨天乙個專案中在寫ibatis中的sql語句時,order by field 執行時總是報錯,後來上網查了查,才知道這裡不該用 而應該用 隨即查了下 與 的區別 總結如下 1.是把傳入的資料當作字串,如 field 傳入的是id,則sql語句生成是這樣,order by id 這當然會報錯 2.傳入...