>In an n-tier application how do the rest of you create reports that are fast?
>
>For example at first I was calling my biz objects to gather data for the reports in for/while loops to get the data, but the performance sucked! Now I am using SQL on the tables directly, which of course is extremely fast. I feel that I have violated n-tier principles. Any guidance is appreciated.
I normally create a custom report bizobj that makes the necessary calls for me. Ideally, I'd like to use my bizobjs that are responsible for the data I'm building the report on, but the reality is that most of the reports I've done don't work out that way. So, I just encapsulate the calls needed in this "Report" bizobj and call it instead. The logic can still be located in the middle tier, which talks to the backend, and it returns my report.