When do you know that you've made a design flaw in a SQL/relational database?
Modeling and performance are related but not quite the same thing.  Performance and scalability will have a lot to do with what DBMS you are actually using.  

Queries which seem to be slow and difficult to execute against MySQL might fly when run against Postgres for instance.  This has everything to do with how intelligent the query planner is.  Older versions of MySQL for instance only seem to know how to perform one kind of join:  Nested-Loop.  This will be fast for small amounts of data and simple queries, but can degrade quickly for complex queries.

You may not have a design flaw.  You may have simply hit the performance wall with your current DBMS.  Which database are you using?

In my opinion, an error in the model exists when you have insert, update, or delete anomalies in the data.  Imagine you store a customer name on each invoice and the customer changes their name.  To perform this update should not require updating the history of every order the customer has ever made.  If it does, you've got a problem with your model.