A few tips...
- USE "EXPLAIN" to see detailed info on queries
- Only select fields you need, avoid SELECT *
- Use indexes (to figure out where you need them, refer to EXPLAIN) for where clauses and ordering.
- Good DB is key! read up on database normalization
- Try to narrow down results as much as you can instead of relying on LIMIT. If you query and sort 1 million rows, and then limit the query to 10, it discards the 999,990 rows after doing all that work. Very slow... example: only select recent items using a date column (last month, say).
- Careful with subqueries! poorly written ones wil be executed on every row returned instead of just once.
As for testing if it's "too" heavy... compare the time executed with other queries. If a page is taking 30 seconds to load, it's too heavy.