Esempio: utilizzo dei token TempTable e OutputTempTable
Si supponga di avere un processo Select1 che selezioni 10.000 clienti con associazione “Gold” (ad esempio, Indiv.AcctType = ‘Gold’). Quindi, venga eseguita la connessione di Select1 a un secondo processo Select (“Select2”) utilizzando una query di SQL raw:
Select p.CustID from Indiv p, <TempTable> where p.CustID = <TempTable>.CustID group by p.CustID having sum(p.PurchAmt) > 500
Tale esempio seleziona i clienti il cui totale degli acquisti eccede $500 e che si trovano nella cella di input (in altre parole, clienti che hanno un tipo di conto “Gold”).
Al contrario, una query di SQL raw che omette l'unione e il token <TempTable>:
Select p.CustID from Purchases p group by p.CustID having sum(p.PurchAmt) > 500
calcola innanzitutto la somma degli acquisti per tutti i membri della tabella Purchases (che potrebbe contenere milioni di clienti) e quindi seleziona tutti i clienti la cui somma degli acquisti supera $500, indipendentemente se sono clienti “Gold” o meno.
Quindi, per prestazioni migliori, anche se l'ottimizzazione in-DB è disabilitata, scrivere le query di SQL raw utilizzando il token <TempTable> quando vi è una cella di input.
Per semplicità, questo esempio non utilizza il token <OutputTempTable>; tuttavia, per conservare l'ottimizzazione in-DB ed evitare che gli ID del destinatario vengano recuperati dal database all'interno del server Campaign, è necessario includere il token <OutputTempTable> nella query di SQL raw. Ad esempio:
Create table <OutputTempTable> as Select p.CustID from Purchases p, <TempTable> where p.CustID = <TempTable>.CustID group by p.CustID having sum(p.PurchAmt) > 500