Query এবং Search Performance Optimization Salesforce ডেটাবেজে কার্যকর ও দ্রুত অনুসন্ধানের জন্য প্রয়োজনীয়। একটি ভালোভাবে অপ্টিমাইজ করা কুয়েরি Salesforce গভর্নর লিমিটের মধ্যে থেকে ডেটা প্রক্রিয়াজাত করে এবং ব্যবহারকারীর জন্য দ্রুত ফলাফল প্রদান করে। এখানে কিছু গুরুত্বপূর্ণ কৌশল ও Best Practices আলোচনা করা হলো, যা SOQL এবং SOSL কুয়েরির পারফরম্যান্স বাড়াতে সহায়ক।
SOQL কুয়েরিতে শুধু প্রয়োজনীয় ফিল্ডগুলো নির্বাচন করা উচিত। অপ্রয়োজনীয় ফিল্ডগুলো রিট্রাইভ না করলে কুয়েরির সময় ও মেমরি কম লাগে এবং গভর্নর লিমিট অতিক্রমের সম্ভাবনা হ্রাস পায়।
অপ্টিমাইজড উদাহরণ:
// শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো সিলেক্ট করা হয়েছে
SELECT Id, Name FROM Account WHERE Industry = 'Technology'
WHERE ক্লজে যেসব ফিল্ডে ইন্ডেক্স রয়েছে, সেগুলো ব্যবহার করলে কুয়েরি দ্রুত সম্পন্ন হয়। Salesforce ইন্ডেক্স সাধারণত প্রধান ফিল্ড, যেমন Id
, Name
, OwnerId
ইত্যাদিতে থাকে। প্রয়োজনে কাস্টম ফিল্ডেও ইন্ডেক্সিং যুক্ত করা যায়।
অপ্টিমাইজড উদাহরণ:
SELECT Id, Name FROM Account WHERE AccountNumber = '12345' // ইন্ডেক্সড ফিল্ড
বেশি ডেটা রিট্রাইভের জন্য LIMIT
ব্যবহার করলে কুয়েরি গভর্নর লিমিটের মধ্যে থেকে ডেটা রিট্রাইভ করতে সক্ষম হয়। তাই প্রয়োজনের অতিরিক্ত ডেটা না নিয়ে নির্দিষ্ট সংখ্যক রেকর্ড সংগ্রহ করা উচিত।
অপ্টিমাইজড উদাহরণ:
SELECT Id, Name FROM Account WHERE Industry = 'Technology' LIMIT 10
একাধিক অবজেক্টে অনুসন্ধান করার জন্য SOSL ব্যবহার করা উত্তম। SOSL ব্যবহার করে একাধিক অবজেক্টে দ্রুত সার্চ চালানো যায় এবং কুয়েরি সময় কম লাগে।
উদাহরণ:
FIND 'Acme' IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)
বেশি ডেটা প্রসেস করার জন্য SOQL For Loop ব্যবহার করা উচিত। এটি গভর্নর লিমিটের মধ্যে থেকে ডেটা প্রক্রিয়াকরণে সহায়ক।
অপ্টিমাইজড উদাহরণ:
for (List<Account> accList : [SELECT Id, Name FROM Account WHERE Industry = 'Technology']) {
for (Account acc : accList) {
System.debug('Account Name: ' + acc.Name);
}
}
NOT
এবং !=
অপারেটর WHERE ক্লজে ব্যবহার করলে কুয়েরির পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে। এর পরিবর্তে =
বা IN
অপারেটর ব্যবহার করা উচিত।
অপ্টিমাইজড উদাহরণ:
// এর পরিবর্তে
// SELECT Id FROM Account WHERE Industry != 'Technology'
// এটি ব্যবহার করুন
SELECT Id FROM Account WHERE Industry IN ('Finance', 'Health')
বড় ডেটাসেট থেকে গাণিতিক পরিসংখ্যান রিট্রাইভ করতে অ্যাগ্রিগেট ফাংশন (যেমন COUNT()
, SUM()
, AVG()
, MAX()
, MIN()
) ব্যবহার করা উত্তম। এটি কুয়েরি পারফরম্যান্স বাড়াতে সহায়ক।
উদাহরণ:
SELECT COUNT() FROM Account WHERE Industry = 'Technology'
Parent-to-Child এবং Child-to-Parent Relationship কুয়েরি ব্যবহার করলে ডেটা একত্রে রিট্রাইভ করা যায় এবং পৃথক কুয়েরি চালানোর প্রয়োজন হয় না, যা পারফরম্যান্স বাড়ায়।
উদাহরণ:
// Parent-to-Child
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
// Child-to-Parent
SELECT LastName, Account.Name FROM Contact
হার্ডকোড করা Id
ব্যবহার না করে পরিবর্তনশীল প্যারামিটার ব্যবহার করা উচিত। এটি কোডকে পুনঃব্যবহারযোগ্য করে এবং অপ্টিমাইজেশনে সহায়ক হয়।
Frequently Used কুয়েরিগুলো সেভ করে Cache ব্যবহার করলে ডেটা রিট্রাইভ দ্রুত হয়। এটি কুয়েরি পারফরম্যান্স বাড়ায়।
Salesforce গভর্নর লিমিট (যেমন DML Limit, SOQL Limit) অতিক্রম না করার জন্য সতর্ক হতে হবে। Bulkify করা এবং যেখানে সম্ভব LIMIT
ব্যবহার করা গভর্নর লিমিট মেনে চলে কুয়েরি পারফরম্যান্স বাড়ায়।
কুয়েরি লেখার সময় Apex CPU Time কম রাখতে কুয়েরি অপ্টিমাইজ করা উচিত। অতিরিক্ত লুপিং এড়িয়ে চলা এবং SOQL For Loop ব্যবহার করা উত্তম।
LIMIT
এবং সঠিক WHERE
ক্লজ ব্যবহার করুন।এসব কৌশল অনুসরণ করে SOQL এবং SOSL কুয়েরির পারফরম্যান্স বাড়ানো যায়, যা Salesforce ডেটাবেজ ব্যবহারে দ্রুততা এবং কার্যকারিতা নিশ্চিত করে।
common.read_more