Cache the lookup transformation: This will query the lookup source once and stores the data in the cache. Whenever a row enters the lookup, the lookup retrieves the data from the lookup source rather than querying the lookup source again. This will improve the performance of lookup a lot.
Restrict Order by columns: By default, the integration orders by on all ports in the lookup transformation. Override this default order by clause to include few ports in the lookup.
Persistent Cache: If your lookup source is not going change at all (example: countries, zip codes). Use persistent cache in this case.
Prefer Static Cache over Dynamic Cache: If you use dynamic cache, the lookup may update the cache. Updating the lookup cache is overhead. Avoid dynamic cache.
Restrict Number of lookup ports: Make sure that you include only the required ports in the lookup transformation. Unnecessary ports in the lookup make the lookup to take time in querying the lookup source, building the lookup cache.
Sort the flat file lookups: If the lookup source is a flat file, using the sorted input option improves the performance.
Indexing the columns: If you have used any columns in the where clause, creating any index (in case of relational lookups) on these columns improves the performance of querying the lookup source.
Database level tuning: For relational lookups you can improve the performance by doing some tuning at database level.