Just did a quick test on my machine: ~20 seconds to export 1M records.

It is probably something with the view, have seen that before. You could maybe use a sql query to get the data and export from there. I have also used SQL jobs for that.

FWIW, this is the code I quickly put together
Use DFAllEnt.pkg

Object oApplication is a cApplication


Open ShopLog

Procedure ExportCSV
    Integer iCounter    
    Direct_Output channel 6 'c:\temp\shoplog.csv'
    Clear ShopLog
    Find GT ShopLog by Index.1
    While (Found and iCounter < 1000000) 
        Increment iCounter
        Writeln channel 6 (String(ShopLog.ID) + ';' + Trim(ShopLog.Function) + ';' + Trim(ShopLog.Param1))
        Find GT ShopLog by Index.1
    Close_Output channel 6

Showln (CurrentDateTime())
Send ExportCSV            
Showln (CurrentDateTime())

Global_Variable Integer giInkey
inkey giInkey