The pragmatic, non-time-consuming approach would be to hire a data mining expert. Even getting one temporarily should be enough to get a good system in place and get you up to speed.
SQL needn't be slow. If you run your SQL query with
EXPLAIN EXTENDED in front of them, MySQL will tell you useful information about what indexes it can use, what indexes it will use and what percentage of rows were filtered out by each index. MySQL query and index tuning is a large topic. If you have specific queries and indexes you want help tuning, the guys over at DBA.SE just love doing that stuff.
You can also pre-process the data and store the results in a separate table which is used by the front-end reporting tool. Something like a cron job or a queue scheduler can be used to process new data regularly as long as the users are aware that the data may be out of date. A little note next to the chart explaining that "This data was calculated at 10:39AM, Thursday 29th March, 2012" should be adequate.
If you have truly exceeded the limits of MySQL, you could try spreading out the load over multiple machines using MapReduce. Hadoop and MongoDB both provide MapReduce. Tutorials are available.