If you notice a drop in performance as your database grows in record volume and complexity, consider trimming and honing existing rules. Follow these best practices for writing efficient rules:
- Avoid OR statements: opt for multiple, simple rules.
- Write rules in the affirmative: avoid using NOT statements whenever possible.
- Avoid filters that must perform a character search. For example, School In List, Last Name Contains.
- Instead of filtering on School In List (CEEB), try the more efficient geomarket.
- Avoid filtering on Source Format, Mailing Sent, or Ping Data. The tables for Source Format, Mailing, and Ping will grow almost exponentially over the life of your database, and filters searching across those tables will see a marked decrease in performance over time.
- By incorporating Do Nothing rules into Exclusivity Groups, you can prevent unnecessary records from being evaluated by your rules whenever possible. If the "Do Nothing" criteria would require many OR statements to define, this might be replaced by a set of streamlined Do Nothing rules preceding the rest of the action rules in this group.
- Do not daisy chain rules.
- Check for any outdated or no longer necessary filters. If a rule is filtering by a date, it may no longer be necessary as no one could reasonably meet that criteria, and thus the rule should be inactivated.
Get a Sense for a Rule's Speed
You can use the below method to explore changes to rules you've been considering quickly and get a good sense of whether those changes would result in a faster rule that can consistently beat timeout.
- In a rule, select New Query from the right navigation.
- Select Check Logic from the right navigation.
- In the Search Records... field, enter the name of a test record and select it.
- Observe how long it takes for the filters to run. This duration would be the amount of time it takes for the Matching Rows count preview to render in a query. Click Close.
- You can adjust the filters according to the best practices described above.
- Repeat this process and observe whether the rule executes more efficiently than before.