In general, the more promotions a customer has in his or her profile, the longer it takes to generate a price for that customer. A customer can have hundreds of promotions without it significantly affecting the time it takes to price an item. However, performance is noticeably affected when a customer profile contains thousands of promotions. As a general rule, assign customers as few promotions as possible to accomplish the business goals for the site.

Do not rely on promotions to do the bulk of price generation for a site. Use properties of the SKU (for example, the salePrice property) to provide varied pricing. In general, if a promotion does not refer to information that might change from one request to another, there may be a more efficient way of implementing that promotion.

For example, referring to a customer’s profile is an efficient way to structure a promotion. The profile will probably be different for every price being generated throughout the site, since many different customers will be using the site.

It is not always efficient to refer to the date, or to other conditions that do not change on a request basis, as part of the promotion evaluation process. For example, consider a situation in which you put all black shoes on sale one week. Rather than creating a promotion that puts black shoes on sale and giving it to every customer, you could set the sale price of the black shoes in either the SKU repository or the underlying database. This way, the promotion is still applied, but no undue load is placed on the promotion evaluation engine.

loading table of contents...