示例:基于简单收件人属性定向
在以下示例中,查询试图识别居住在法国的18至30岁的男子。 例如,此查询将用于旨在使其成为排他选件的工作流中。
-
命名您的查询,然后选择 Edit query… 链接。
-
在可用筛选器类型列表中选择 Filtering conditions。
-
为建议的目标输入不同的标准。 此处使用AND选项组合标准。 要包含在选择中,收件人必须满足以下四个条件:
- 标题为“先生”的收件人(也可以使用 性别 字段并选择 男性 作为值找到)。
- 年龄在30岁以下的收件人。
- 18岁以上的收件人。
- 居住在法国的收件人。
您可以查看与您的条件组合匹配的SQL:
-
您可以通过预览在相关选项卡中与您的查询匹配的收件人,来检查您的标准是否正确:
-
保存您的筛选器,以便日后通过单击 Finish > OK 再次使用这些筛选器。
-
通过向工作流中添加其他活动来继续编辑工作流。 启动查询并完成上一个查询步骤后,将显示找到的收件人数量。 您可以使用鼠标弹出菜单显示更多详细信息(右键单击过渡> Display the target…)。
输出参数
- 表名
- 架构
- recCount
这组三个值标识查询所定向的群体。 tableName 是记录目标标识符的表的名称,schema 是群体的架构(通常为nms:recipient),recCount 是表中的元素数。
此值是工作表的模式。 此参数对于具有 tableName 和 schema 的所有过渡都有效。
优化查询
以下部分提供了优化在Adobe Campaign上运行的查询的最佳实践,以限制数据库上的工作负载并改善用户体验。
联接和索引
-
高效的查询依赖于索引。
-
对所有连接使用索引。
-
在架构上定义链接将确定连接条件。 链接表的主键上应有一个唯一索引,并且联接应位于此字段上。
-
通过在数字字段而不是字符串字段上定义键来执行联接。
-
避免执行外连接。 只要有可能,请使用Zero ID记录实现外部连接功能。
-
对连接使用正确的数据类型。
确保
where
子句与字段的类型相同。常见的错误是:
iBlacklist='3'
,其中iBlacklist
是数字字段,3
表示文本值。确保您知道查询的执行计划。 避免进行完整的表扫描,特别是对于每分钟运行的实时查询或近乎实时的查询。
有关更多信息,根据您的Campaign版本,请参阅以下章节:
功能
-
请注意类似
Lower(...)
的功能。 当使用Lower函数时,不使用Index。 -
仔细检查使用“like”指令或“upper”或“lower”指令的查询。 将“Upper”应用于用户输入,而不是数据库字段。
有关函数的更多信息,请参阅此章节。
过滤维度
使用查询的筛选维度,而不是使用“存在方式”运算符。
在查询中,过滤器中的“存在”条件无效。 它们等同于SQL中的子查询:
select iRecipientId from nmsRecipient where iRecipientId IN (select iRecipientId from nmsBroadLog where (...))
最佳实践是改用查询的筛选维度:
SQL中过滤维度的等效项是内部联接:
select iRecipientId from nmsRecipient INNER JOIN nmsBroadLog ON (...)
有关筛选维度的详细信息,请参阅此部分。
架构
-
构建开发平台,其卷、参数和架构与生产平台相似。
-
对开发和生产环境使用相同的值。 请尽量使用相同的方式:
- 操作系统,
- 版本,
- 数据,
- 应用程序,
- 卷。
NOTE
在开发环境中工作的功能可能无法在数据可能不同的生产环境中工作。 尝试识别主要差异以预测风险并准备解决方案。 -
进行与目标卷匹配的配置。 大型卷需要特定的配置。 适用于100,000个收件人的配置可能无法适用于10,000,000个收件人。
考虑系统启用后的扩展方式。 不能因为某事物具有小规模运作而认为它适合大件作品。 应该使用与生产卷类似的卷进行测试。 您还应该评估在高峰时间、高峰日以及在整个项目周期内卷更改(调用的次数、数据库的大小)的影响。