jdbc:mysql://xxx.22.11.31:3306/dbname?useServerPrepStmts=truemysql
JDBC中使用PreparedStatement來抽象預編譯語句,從而使用達到預編譯效果。sql
預編譯能夠將多個操做步驟合併成一個步驟,通常而言,越複雜的sql,編譯程度也會複雜,難度大,耗時,費性能,而預編譯能夠合併這些操做,預編譯以後DBMS能夠省去編譯直接運行sql。數據庫
把一個 sql 預編譯後產生的 PreparedStatement 對象緩存下來,下次對於同一個sql,能夠直接使用這個緩存的 PreparedState 對象。有興趣的能夠查看mysql驅動包裏面的ConnectionImpl類是如何操做預編譯的,這裏提一下緩存PreparedStatement,在執行預編譯時會先去判斷是否存在緩存,若是存在則對參數清空,綁定新的參數。若是不存在則調用數據庫進行預編譯處理生成一個PreparedStatement對象。緩存
那若是按照默認不開啓預編譯的話,會是什麼狀況? 每次JDBC都須要編譯sql,性能