If you notice a drop in performance as your database grows in record volume and complexity, you may 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.
- 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.
- Prevent unnecessary records from being evaluated by your rules whenever possible by incorporating Do Nothing rules into Exclusivity Groups. 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 write a rule that is dependent on the result of another rule (that is, daisy chaining rules). Rule sets run concurrently and at different rates. If a first rule set is dependent on the results from a second rule set, the first rule set would not function as desired because the second rule set has not yet completed.
Get a Sense for a Rule's Speed
Use the following method to explore changes to rules you've been considering to help get a good sense if those changes would result in a faster rule that can consistently complete within the rule timeout period.
- Within a rule, click New Query on the right side of the page.
- Click the Check Logic link in the Filters section of the page.
- 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.
- Adjust the filters in accordance with the best practices described above.
- Repeat this process and observe if the rule executes any more efficiently than before.