Live connections stay connected to the database and, when a filter is selected, must re-issue it's query (see the following really good explanation: Live Connection Question). So this is working how it's designed. I can't explain exactly why it would execute 7-8 times though. I think you may want to look at using an extract for this if you're hoping to avoid multiple executions of the SP.
A have found a solution.
The SP is executed several times (too many) if I publish the data source to Tableau Server and then I publish the workbook.
I the data source is embedded in the workbook and so I publish both the workbook and the data source in the same time, the SP is executed only when I refresh the report, that is what I was looking for.