- 24 Mar 2025
- 2 minute read
- Print
- DarkLight
- PDF
Rule Efficiency
- Updated 24 Mar 2025
- 2 minute read
- Print
- DarkLight
- PDF
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.
đź“– Related reading: Troubleshooting Tips for Database Health
Best practices for rule-building
When troubleshooting rule efficiency, keep an eye out for these common issues:
OR: Avoid OR statements. Instead, opt for multiple simple rules.
NOT: Write rules in the affirmative. A void using NOT statements whenever possible.
Character Search: Avoid filters that must perform a character search . For example, School In List, Last Name Contains.
CEEB: Instead of filtering on School In List (CEEB), try the more efficient geomarket.
Expensive Tables: Source Format, Message, Message Track, Ping: Avoid filtering on Source Format, Message, Message Track, or Ping Data . These data tables 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. We often call these “computationally expensive” tables as they take a large amount of resources to query upon.
Do Nothing: 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.
Daisy Chain: Do not daisy chain rules. A rule cannot rely on the result of another rule.
Outdated Filters: Check for any outdated or no longer necessary filters. If a rule is filtering by date, it may no longer be necessary as no one could reasonably meet that criteria, and thus the rule should be inactivated. If you have not already, update your rules to use Configurable Joins query bases.
Preview Status: If you’re not actively using or testing a rule, be sure to set its status to Inactive. Rules left in Preview status will still execute queries to identify matching records, though they won’t apply any actions to those records.
Measuring 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.