# Pushdown optimization types

When you apply pushdown optimization, the task pushes transformation logic to the source or target database based on the optimization type you specify in the task properties. Data Integration translates the transformation logic into SQL queries or Snowflake commands to the Snowflake database. The database runs the SQL queries or Snowflake commands to process the transformations.

You can configure the following types of pushdown optimization in a mapping:

- None
- The task does not push down the transformation logic to the Snowflake database.

- Full
- The task pushes as much of the transformation logic as possible to process in the target database.

- Source
- The task pushes down as much as the transformation logic as possible to process in the source database. When you select source pushdown optimization, the task pushes the transformation logic for all the supported transformations downstream in the mapping.

## Data Integration behavior with source and full pushdown optimization

When you select full or source pushdown optimization for a mapping that reads from or writes to Snowflake, Data Integration analyzes the mapping from the source to the target or until it reaches a downstream transformation to determine whether to push down only partial or the entire mapping logic for processing to the database.

If all the transformations in the mapping are supported for pushdown optimization, the task pushes down the entire mapping logic to the database.

When a transformation is not applicable for pushdown optimization in the mapping, the task partially pushes down the mapping logic to the point where the transformation is supported for pushdown optimization. Data Integration generates and executes a SELECT statement for the transformation logic that needs to be pushed down. Then, it reads the results of this SQL query and processes the remaining transformations in the mapping.