开发者社区 问答 正文

数据库优化,如何设计方案?

业务是这样的,一个人可以选择要去哪些地方上课,同时,他还要选择自己要上哪些课。 然后我要查询的内容: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%'))`
问题:
如上的查询语句是否可优化,或者数据库设计是否能优化。

展开
收起
落地花开啦 2016-02-14 17:51:47 2554 分享 版权
1 条回答
写回答
取消 提交回答
  • 个人对建模比较关注

    (查出地域)
    inner join
    (查出课程)
    inner join
    用户名

    2019-07-17 18:42:50
    赞同 展开评论
问答分类:
问答地址: