Not knowing what your table structures are, or what your data looks like, I can only give generic advice, or things to look for.
1. Using "select *" will bring back every column from a table. You can increase speed by only bringing back the columns you actually need.
2. What are the datatypes and sizes of the columns? Large VARCHAR columns are more expensive to return than INTEGER or other numeric columns.
3. Are the ID columns on the joined tables indexed?
4. Are the foreign key columns on the Society table indexed?
5. How many rows are in the Society table? You are bringing back the entire table from Society. Is there any possibility of including a "WHERE" clause to limit the amount of data you're retrieving? As in "Select ... FROM Society inner join...WHERE Society.ID = 5" or something like that?
6. How many rows from the joined tables are you expecting? More than one? You might consider the impact on potential row-inflation.
7. Are you certain there will always be a joinable row in each of the joined tables? If not, you should use LEFT JOIN where appropriate.
Other than that, I don't know what else to tell you. More detail about your specific scenario would help.