我对组织我的Web应用程序(php + mysql)有疑问。我有很多桌子。我必须通过不同的参数搜索它。例如:country:2和category1:33以及语言:3。
select distinct s.id from tbl_item s
left join tbl_item_act ep on s.id = ep.item_id
left join tbl_item_act_category cl3 on cl3.id = ep.category_id
left join tbl_item_act_category cl2 on cl2.id = cl3.parent_id
left join tbl_item_act_category cl1 on cl1.id = cl2.parent_id
left join tbl_city ci on ci.id = s.city_id
left join tbl_country co on co.id = ci.country_id
left join tbl_language la on la.id = cl2.language_id
left join tbl_item_subject sbb on sbb.item_id = s.id
left join tbl_subject sb on sb.id = sbb.subject_id and sb.subject_type = 'subject'
left join tbl_subject ev on ev.id = sbb.subject_id and ev.subject_type = 'event'
left join tbl_season se on se.id = cl1.season_id or se.id = cl2.season_id
left join tbl_education_type et on et.id = s.education_type_id
left join tbl_item_tag_binding stagb on stagb.item_id = s.id
left join tbl_item_tag stag on stag.id = stagb.tag_id
left join tbl_item_type_binding stb on stb.item_id = s.id
left join tbl_item_type st on st.id = stb.item_type_id
where s.original_id is null and cl1.id = 33 and la.id = 2 and se.id = 2
我必须在一个页面上执行9-10个查询。 每个查询大约需要50毫秒。我尝试生成一个表(例如视图)并在此处存储已连接的数据(作为缓存表),但它存储了数百万行,每次查询搜索大约需要500毫秒。我尝试了nosql(mongodb)搜索(大数据树),这需要很短的时间。大约20-30毫秒,但它对我来说很重要。
在我的数据结构中通过许多参数创建快速搜索的最佳做法是什么?
抱歉我的英语。答案 0 :(得分:0)
它面临巨大的挑战,但你需要apache的Solr或Lucene