Here are the high-level ones:
- Make sure that your tables are appropriately indexed.
- Use either a materialized view, a Multiple Tables connection in Tableau, or a Tableau Data Extract as your data source. (In other words avoid Custom SQL if you can).
- Think about the kinds of analyses or reports you are doing and rather than build the Mother of All Queries to handle all of them, build data sources that are tuned to your needs. This may be an iterative process.
There are a number of other performance tuning resources if you look on the website here.