在使用Statement物件執行語句時,特別是插入語句時,每次執行查詢時,整個語句都會被編譯並一遍又一遍地執行,其中,這些語句之間唯一的差別是語句的值。
然而,準備好的語句是預編譯語句,即查詢被編譯並儲存在資料庫中,使用佔位符(?)而不是值,並且稍後提供這些佔位符的值。因此,避免一次又一次不必要的編譯和執行語句。
範例
假設,我們在資料庫中有一個名為Dataset的表,其中包含列mobile_brand 和unit_sale,如果我們想使用語句物件將記錄插入到該表中,程式碼將如下所示:
stmt.executeUpdate("insert into Dataset values('Iphone', 3000)"); stmt.executeUpdate("insert into Dataset values('Samsung', 4000)"); stmt.executeUpdate("insert into Dataset values('Nokia', 5000)"); stmt.executeUpdate("insert into Dataset values('Vivo', 1500)"); stmt.executeUpdate("insert into Dataset values('Oppo', 9000)"); stmt.executeUpdate("insert into Dataset values('MI', 6400)"); stmt.executeUpdate("insert into Dataset values('MotoG', 4360)"); stmt.executeUpdate("insert into Dataset values('Lenovo', 4100)"); stmt.executeUpdate("insert into Dataset values('RedMi', 4000)"); stmt.executeUpdate("insert into Dataset values('OnePlus', 6334)");
對於每個executeUpdate() 方法調用,都會編譯並執行其中的整個語句。在這裡,如果您觀察到僅語句的值被更改,而其餘查詢則被不必要地編譯。
如果您使用準備好的語句編寫插入查詢以在同一個表中插入相同的數據,則程式碼如下所示:
PreparedStatement pstmt = con.prepareStatement("insert into Dataset values(?, ?)"); pstmt.setString(1, "Iphone"); pstmt.setInt(2, 3000); pstmt.executeUpdate(); pstmt.setString(1, "Samsung"); pstmt.setInt(2, 4000); pstmt.executeUpdate(); pstmt.setString(1, "Nokia"); pstmt.setInt(2, 5000); pstmt.executeUpdate(); pstmt.setString(1, "Vivo"); pstmt.setInt(2, 1500); pstmt.executeUpdate(); pstmt.setString(1, "Oppo"); pstmt.setInt(2, 900); pstmt.executeUpdate(); pstmt.setString(1, "MI"); pstmt.setInt(2, 6400); pstmt.executeUpdate(); pstmt.setString(1, "MotoG"); pstmt.setInt(2, 4360); pstmt.executeUpdate(); pstmt.setString(1, "Lenovo"); pstmt.setInt(2, 4100); pstmt.executeUpdate(); pstmt.setString(1, "RedMi"); pstmt.setInt(2, 4000); pstmt.executeUpdate(); pstmt.setString(1, "MotoG"); pstmt.setInt(2, 4360); pstmt.executeUpdate(); pstmt.setString(1, "OnePlus"); pstmt.setInt(2, 6334); pstmt.executeUpdate();
在這裡,如果您觀察到插入查詢是用佔位符(?)準備的,並且該查詢被編譯並儲存在資料庫中,稍後使用PreparedStatement介面的setter方法傳遞值,從而避免了不必要的執行聲明。
以上是為什麼 JDBC 中的準備語句比語句更快?解釋?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

todropaviewInmySQL,使用“ dropviewifexistsview_name;” andTomodifyAview,使用“ createOrreplaceViewViewViewview_nameAsSelect ...”。 whendroppingaview,asew dectivectenciesanduse和showcreateateviewViewview_name;“ tounderStanditSsstructure.whenModifying

mySqlViewScaneFectectialized unizedesignpatternslikeadapter,Decorator,Factory,andObserver.1)adapterPatternadaptSdataForomDifferentTablesIntoAunifiendView.2)decoratorPatternenhancateDataWithCalcalcualdCalcalculenfields.3)fieldfields.3)

查看InMysqlareBeneForsImplifyingComplexqueries,增強安全性,確保dataConsistency,andOptimizingPerformance.1)他們simimplifycomplexqueriesbleiesbyEncapsbyEnculatingThemintoreusableviews.2)viewsEnenenhancesecuritybyControllityByControllingDataAcces.3)

toCreateAsimpleViewInmySQL,USEthecReateaTeviewStatement.1)defitEtheetEtheTeViewWithCreatEaTeviewView_nameas.2)指定usethectstatementTorivedesireddata.3)usethectStatementTorivedesireddata.3)usetheviewlikeatlikeatlikeatlikeatlikeatlikeatable.views.viewssimplplifefifydataaccessandenenanceberity but consisterfort,butconserfort,consoncontorfinft

1)foralocaluser:createUser'localuser'@'@'localhost'Indidendify'securepassword'; 2)foraremoteuser:creationuser's creationuser'Remoteer'Remoteer'Remoteer'Remoteer'Remoteer'Remoteer'Remoteer'Remoteer'Rocaluser'@'localhost'Indidendify'seceledify'Securepassword'; 2)

mysqlviewshavelimitations:1)他們不使用Supportallsqloperations,限制DatamanipulationThroughViewSwithJoinsOrsubqueries.2)他們canimpactperformance,尤其是withcomplexcomplexclexeriesorlargedatasets.3)

porthusermanagementinmysqliscialforenhancingsEcurityAndsingsmenting效率databaseoperation.1)usecReateusertoAddusers,指定connectionsourcewith@'localhost'or@'%'。

mysqldoes notimposeahardlimitontriggers,butacticalfactorsdeterminetheireffactective:1)serverConfiguration impactactStriggerGermanagement; 2)複雜的TriggerSincreaseSySystemsystem load; 3)largertablesslowtriggerperfermance; 4)highConconcConcrencerCancancancancanceTigrignecentign; 5); 5)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用