As Anand has suggested. Storing the data for 2015 and 2016 into qvds.
If you take your original script for 2015 and 2016, and a store command to save it to QVD.
Like Store 2015 into lib://'Your library'\2015.qvd; (Your library be where you want them ).
Once in QVDs, you can just load using there as your source and you should see a big difference in load times.
Also maybe worth looking at the Incremental load logic if you 2017 file is very large.