Both the EXISTS() function or the MAPPING table will take longer than a usual load, since you need to load twice some of the data (at least the key field). Note that both solutions work only in the load script, that seems the fastest alternative, rather than load all the information and use any expression based on the data entered by the user to show or not to show the data.
I'm sure you can get something similar with JOIN or KEEP, but my guess is that they will be less efficient.
How long does your script to load and how many rows are you speaking of?
The load takes around 10 - 11 mins to get the data from 8 tables (these tables are joined to get 2 tables in qlikview) with the volume of data is 30 million in one table and over 1 million in another. This data is only for couple of years. We need to futher extract data for 10 years.
As the output from the MINUS part of the query is based on user input. Is there a way to pass user parameters to Exists() funtion in load script.
There is no easy way to pass parameters to the load script. One way is create a QVW that only stores this input in a QVD file, that is later read by the QVW that creates the SQL accordingly. But it's a two file load anyway, one that asks the user for the values to build the SQL, the other to actually load from the database and do all the data model and so.
Hope that helps.