最開始 我在程序里使用SQL訪問數(shù)據(jù)庫時,都是直接用“+”將字段值嵌到SQL中。?
后來我開始使用PreparedStatement,在SQL里使用“?”標(biāo)記參數(shù),然后用setXXX方法給參數(shù)賦值。當(dāng)時只知道這樣用是因為有setDate,setTimeStamp這些用“+”連接不能直接嵌入的值。
感覺PreparedStatement在性能方面應(yīng)該也能快點,可能DBMS會重用,但不明底層原理。
這次《數(shù)據(jù)庫實現(xiàn)》課程終于讓我弄懂了:每個SQL語句都要通過 語法分析 -> 生成邏輯查詢計劃 -> 邏輯優(yōu)化 -> 物理優(yōu)化 等步驟生成具體的執(zhí)行計劃,用PreparedStatement就可以生成一個執(zhí)行計劃,以后只是參數(shù)改變(相當(dāng)于執(zhí)行計劃的執(zhí)行環(huán)境改變),前面的四個步驟也會省略,從而提高了效率。
如果一個SQL語句要被反復(fù)多次執(zhí)行,或多用戶同時操作,則應(yīng)選用PreparedStatement!
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||