求数据库优化设计方案

eonezhang 发布于 2013/08/09 18:19
阅读 103
收藏 0
业务是这样的,一个人可以选择要去哪些地方上课,同时,他还要选择自己要上哪些课。 然后我要查询的内容:1.查看某些课程(可能同时查两样课程)有哪些老师在上(比如我要查询上英语和语文的老师有哪些)。2.按地区查找上课的老师(比如我要查询在成都和重庆上课的老师有哪些)3.综合1和2的查询,既,要查询在四川和重庆有哪些老师在上英语和语文课。

userinfo(id,username) 存放用户信息
usersubs(userid,subs) 存放用户的选课信息(一个用户可以选择多门课程)
userarea(userid,area) 存放用户的地区信息(一个用户可以选择多个地区)

其中usersubs和userarea的userid列是参考userinfo#id,可以理解为外键。

测试数据如下

insert  into `user_area` values (1,'0000001'),(1,'1000002'),(1,'2000001'),(2,'0000002'),(2,'1000001');
insert  into `user_info` values (1,'u1'),(2,'u2'),(3,'u3');
insert  into `user_subjects` values (1,'0001'),(1,'1002'),(2,'0001'),(2,'1002');

查询语句
SELECT u.* FROM user_info u WHERE u.userid IN(SELECT a.userid FROM user_area a, user_subjects s WHERE a.userid=s.userid AND (a.area LIKE '00%') AND (s.subject LIKE '10%' OR s.subject LIKE '20%'))

问题:
如上的查询语句是否可优化,或者数据库设计是否能优化。
加载中
返回顶部
顶部