Model.scoped_by_body_type_id ( event.body_type_ids ).scoped_by_skin_color_id ( event.skin_color_ids ).find( :all, :conditions => ['weight_pounds <= ? AND total_height_inches >= ? AND minimum_pay <= ? AND job_types.id = ? AND regions.id = ? AND languages.id in (?)', event.maximum_weight_in_pounds, event.total_minimum_height_inches, event.payment_per_head, event.job_type_id, event.region_id, event.language_ids ], :joins => [:job_types, :regions, :languages])
Is this triple join asking for trouble? I mean is my server going to hate me? language, region and job_types are going to have less than 10 row entries, but job_type_preferences, language_preferences and region_preferences will scale linearly with the number of users....
Model Load (0.7ms) SELECT `models`.* FROM `models` INNER JOIN `job_type_preferences` ON (`models`.`id` = `job_type_preferences`.`model_id`) INNER JOIN `job_types` ON (`job_types`.`id` = `job_type_preferences`.`job_type_id`) INNER JOIN `region_preferences` ON (`models`.`id` = `region_preferences`.`model_id`) INNER JOIN `regions` ON (`regions`.`id` = `region_preferences`.`region_id`) INNER JOIN `language_preferences` ON (`models`.`id` = `language_preferences`.`model_id`) INNER JOIN `languages` ON (`languages`.`id` = `language_preferences`.`language_id`) WHERE (weight_pounds <= NULL AND total_height_inches >= 60 AND minimum_pay <= 2000 AND job_types.id = 4 AND regions.id = 1 AND languages.id in (NULL)) AND ((`models`.`body_type_id` IN (4) AND `models`.`skin_color_id` IN (4)))