I need sombody help me with speed up the ORACLE report when client and server separated far away.

I built a report based on SQL query:

select distinct col1, col2, function1(col1) as alias1, decode(....) as alias2, function2(col2) as alias3
from table1
where condition1 and
condition2(involving one parameter passed from another form)
ORDER BY column1, column2,......;

where function1, function2 is any function located on server side.

When it runs locally, the speed is OK; but if connected to another database server(several miles away), the report is very slow, it alway "formatting" every page for a certain period of time.

I need some advice on how to increase the performance by all means. Please help.

Thanks