কম্পিউটার টিউটোরিয়াল

JDBC-তে Prepared Statement কেন Statement-এর চেয়ে দ্রুত? ব্যাখ্যা করুন।


Statement অবজেক্ট ব্যবহার করে স্টেটমেন্ট এক্সিকিউট করলে (বিশেষ করে INSERT), প্রতিবার কোয়েরি এক্সিকিউট হলে পুরো স্টেটমেন্ট কম্পাইল ও এক্সিকিউট হয়। এই স্টেটমেন্টগুলোর মধ্যে একমাত্র পার্থক্য থাকে মানগুলোর।

অন্যদিকে, Prepared Statement হল একটি প্রি-কম্পাইল্ড স্টেটমেন্ট। অর্থাৎ কোয়েরি কম্পাইল হয়ে ডেটাবেসে সংরক্ষিত থাকে প্লেসহোল্ডার (?) ব্যবহার করে, এবং মানগুলো পরে সরবরাহ করা হয়।

এতে বিনা কারণ কম্পাইল ও এক্সিকিউশন বারবার হবে না।

উদাহরণ

ধরি Dataset নামক একটি টেবিল আছে mobile_brand এবং unit_sale কলামসহ। Statement ব্যবহার করে ডেটা ইনসার্ট করলে:

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() কলের জন্য পুরো স্টেটমেন্ট কম্পাইল ও এক্সিকিউট হয়। শুধু মানগুলো বদলায়, বাকি কোয়েরি অপ্রয়োজনীয় কম্পাইল হয়।

Prepared Statement ব্যবহার করলে:

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();

এখানে ইনসার্ট কোয়েরি প্লেসহোল্ডার (?) দিয়ে প্রস্তুত হয়েছে এবং একবার কম্পাইল হয়ে ডেটাবেসে থাকে। পরে setter মেথডগুলো ব্যবহার করে মান পাস করা হয়, ফলে অপ্রয়োজনীয় কম্পাইল এড়ায়।


  1. কেন কিছু ব্রাউজার অন্যদের চেয়ে দ্রুত?

  2. স্মার্টফোন ডাম ফোনের চেয়ে বেশি নিরাপদ: ৫ কারণ

  3. কেন পাসফ্রেজ এখনও পাসওয়ার্ড এবং ফিংগারপ্রিন্ট চেয়ে বেশি নিরাপদ

  4. আপলোড স্পিড ডাউনলোড স্পিডের চেয়ে অনেক ধীর কেন?