1) where is the database server located? If it is overseas then thus is expected!!
2) Is the DB server busy with other jobs and has allocated less resource for your query or has the DBA restricted the resource for your user group.
3) In a table of millions of records the more the number of filters in your where clause the longer it takes to retrieve the data, try reducing the filters in your sql statement.
4)Your Network speed
5) The amount of ram on your machine
6) If you are querying a VIEW instead of a TABLE then note that a view will rebuild everytime you query it which adds to the processing time, try to create a static table and query that Table instead and have the table refreshed overnight or weekly as needed.
As what information you added, anyone can add solution with basic information , I don't think these type of answer is enough to fix your problem, Please provide us information in more detail and first contact to your DB Administrator , ask the data base configuration, fetching data is no less than downloading data.