কম্পিউটার

কেন জেডিবিসিতে প্রস্তুত বিবৃতিগুলি বিবৃতির চেয়ে দ্রুত? ব্যাখ্যা করা?


স্টেটমেন্ট অবজেক্ট ব্যবহার করে স্টেটমেন্ট এক্সিকিউট করার সময়, বিশেষ করে ইনসার্ট স্টেটমেন্ট, প্রতিবার কোয়েরি চালানো হলে পুরো স্টেটমেন্ট কম্পাইল করা হয় এবং বারবার এক্সিকিউট করা হয় যেখানে, এই স্টেটমেন্টের মধ্যে একমাত্র পার্থক্য হল স্টেটমেন্টের মান।

যেখানে, প্রস্তুত বিবৃতি হল একটি পূর্ব-সংকলিত বিবৃতি অর্থাৎ প্রশ্নটি কম্পাইল করা হয় এবং ডাটাবেসে সংরক্ষিত হয়, এই স্থানধারকদের মান এবং মানের পরিবর্তে স্থানধারক (?) ব্যবহার করে পরে সরবরাহ করা হয়।

সুতরাং, বিবৃতি বারবার অপ্রয়োজনীয় সংকলন এবং সম্পাদন এড়ানো।

উদাহরণ

ধরুন, আমাদের ডেটাসেট নামে একটি টেবিল আছে mobile_brand কলাম সহ ডাটাবেসে এবং ইউনিট_বিক্রয় , যদি আমরা স্টেটমেন্ট অবজেক্ট ব্যবহার করে এই টেবিলে রেকর্ড সন্নিবেশ করতে চাই তাহলে কোডটি এরকম হবে:

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

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


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

  2. 5টি কারণ কেন স্মার্টফোনগুলি বোবা ফোনের চেয়ে বেশি সুরক্ষিত

  3. কেন পাসফ্রেজগুলি এখনও পাসওয়ার্ড এবং আঙুলের ছাপের চেয়ে ভাল

  4. আপলোডের গতি কেন ডাউনলোডের গতির চেয়ে অনেক কম?